HEREDOCs are very useful for dumping large blobs of text into a variable, or directly out to the client. It also saves you multiple concatenations if you're building up a long multi-line string. The only main drawback is you need to pre-process any data you'll be inserting.
echo <<<EOF
<input type="text" name="foo" value="$bar" />
EOF;
is very readable, especially with an syntax-highlighting editor. But you do need to pre-process $bar with htmlspecialchars() OUTSIDE there heredoc (for escaping quotes), so you end up with:
$bar = htmlspecialchars($bar);
echo <<<EOF
etc....
Whereas if you're in "html mode", you could use:
<input type="text name="foo" value="<?php echo htmlspecialchars($bar) ?>" />
or
echo '<input type ... snip ... value="' . htmlspecialchars($bar) . etc....
Generally you don't need to store the escaped version of the data, so you might as well dump it out directly and save yourself the variable assignment step. HEREDOCs don't let you do that, as you can't insert a function call into them directly.