No, the size of the string isn't that worrying. PHP's memory works on reference-counting scheme. If you have
$a="I am a string.";
it means that "I am a string" gets stored away somewhere and a symbol $a is created to point to it.
If you then go
$b=$a;
Then $b is created to point to the same copy of "I am a string" that $a does.
If you then modify $b, a modified version of the string is created and $b is repointed to that. The same goes if $a is modified.
It's the same when passing arguments to functions - copying and its associated hit on memory only occurs if the function modifies the values of any of its arguments.
As for whether this holds or not when it's a matter of dropping in and out of HTML mode instead of passing the HTML as a string to a function, I have to admit I'm not quite so certain. I tend to suspect that the big block of HTML would be stored by PHP somewhere anyway, and storing it in a value would only mean one more symbol in the list, rather than an extra huge string.
There're some articles at http://www.zend.com/zend/art/ that may be more useful.