TF normally does its output through "streams", which are analagous to the streams of C stdio.
Output from most tf commands, including /echo, are output to "tfout", which is normally attached to the screen. Tf error messages, hook messages, and the output of "/echo -e" are output to "tferr", which is always attached to the screen.
Text from a world or "/echo -w" is sent to a stream for that world. Text sent to a world stream will be stored in the history of that world. If that world is the foreground world, the text is sent to the screen immediately; otherwise, it will not be displayed until world is brought into the foreground.
During a command /quote or $() command substitution, tfout is attached to a temporary queue that collects the output of the command. But tferr remains attached to the screen at all times, so error messages, hook messages, and "/echo -e" are still displayed to the screen and not captured by the output redirection.
See also: interface, substitution, /quote.