We'll simply have to agree to disagree.
I have been unable to find anything official in any PHP documentation that describes the performance penalty of buffering output when using sessions, and in testing, I've been unable to measure any performance differences that result when calling ob_start and ob_end_flush in all my scripts that use sessions. The added flexibility in header management has also made my program logic far more flexible.
As for PHP outputing a premature header when it encounters a spurious blank line somewhere in an include file - I do consider this a flaw in the parser. I did not give PHP any command or instruction to output HTTP headers, I simply left a blank line in an include file somewhere. How can you possibly blame this on poor programming - it's a parser error as far as I'm concerned. No language parser should be that hung up on whitespace.
And as for my real world example of my application spending the majority of it's time in the database, so any minor time spent in buffering output (which did not exist in my testing by the way) would not be apparent to the user - it is exactly the right example.
Far too many programming "experts" spend their time optomizing the wrong parts of their application to get a 2% improvement, when a change in the database schema or in their program logic will have a 1000% improvement in performance and the user experience. Cost effective programming is not about hunting down that elusive extra blank line that causes the parser to break your application, but in getting the application logic and flow right the first time.
Again, we will agree to disagree on what is important or is proper programming practice in this case.
-t