Yes, this this exectly the bug I had recently. You see, your output buffering is ok. The problem is in PHP session (in 4.2.0 and later), which uses output buffering too, but not correctly.
The problem is : when you start you output buffering your default buffer size is 40*1024 = 40KB, but if you start session it will change this limit to 4096, and forget about it, i mean that it forgets to close it's output buffering, so if you use session, your output buffer size will always be bound to 4K.
The solution to this problem is to correct the mistake of the session by ourselves, I mean that you should close it's output buffer using ob_end_flush(), after that your limit will be restored, and your script will be working properly.
one.php
<?
session_start();
echo $something;
?>
two.php
<?
ob_start();
include("one.php");
ob_end_flush(); // Correcting session mistake
$contents = ob_get_contents();
ob_end_clean();
echo "This is some text";
echo $contents;
?>