Output is aggressively buffered when no pseudo-terminal is available. For long-running commands, users have no way of checking how much progress has been made, even if the command gives regular output. If ssh had, say, a "LineBuffering" or "DisableBuffering" option, then users could control this behavior.
ssh generally tries to get data moved from its buffers at the earliest possible time. What problem are you experiencing and can you provide a recipe to reproduce it?
Are you sure it's not the remote command that's causing the buffering? sshd will send output to the network as soon as it's available, although it may get buffered in the TCP stack. this: $ ssh localhost "tty; while sleep 1; do date; done" gives me "not a tty" and output at approximately 1 second intervals.
I'm sorry; you're completely right. I should have looked into this a bit more. I opened this because of a user report, and I should have been more careful. It turns out that the user was running a Python script, and Python buffers stdout aggressively by default. There are easy workarounds, none of which involve changing the behavior of ssh. :) Sorry for the noise.
Set all RESOLVED bugs to CLOSED with release of OpenSSH 7.1