Your explanation is correct. That is the semantics of Unix stdio buffering as implemented by glibc. So across a wide variety of languages, you'll see a significant performance difference if you are doing lots of writes to the terminal.
On the other hand if you didn't do this, then interactive terminal programs would be entirely unusable.