Snippets are run inside an
ouput buffer that concatenates both the return value and whatever is echo’d during execution (look at the [tt]evalSnippet()[/tt] function in [tt]manager/includes/document.parser.class.inc.php[/tt]).
In my practice I always return the output of my snippet. I have no strong reasons for doing it this way, but I’ve built a little "toolkit" to ease creation of complex snippets (those with language strings, presets, templates, etc.), and it is built around snippets returning their result rather than echoing it.
I guess in my mind the main reason for returning a value is this: 1) In an object-oriented environment, you should limit the areas where information is echo’d to designated output controllers; in this case, the DocumentParser object. Echoing values is a fantastic debugging tool but having it littered throughout your source just seems sloppy to me.
Just my two cents.