I just had the same problem. It looks like Phalcon flushes the current output buffer level and creates it's own when starting the dispatch loop. This looks strange, but it works for me:
ob_start();
ob_start();
<do you stuff>
ob_end_clean();
$output = ob_get_clean();
Best
Fabian