Flushing stream buffers when using the TCPSender is the only way to ensure data is not lost if the socket to the syslog server becomes invalid (eg. syslog server reboots) after the syslog client is instantiated.
Flushing "onSend" does have a performance penalty though, and in some cases end-users may be willing to do without that safety in return for greater performance.