I can't think of any use case where a default empty string is useful.  Block#render always passes the output parameter to render_all, so the default would be unused.

In tests, we to pass in the output parameter so that we have a reference to the original string.  Even if we returned the output parameter, we would want to make assertions on the original output parameter to avoid `output + "stuff"` being returned instead of `ouput << "staff"`.