Text concatenation becomes extremely slow with large strings.  When you're building a large string piece by piece, (I.E. the DMM and JSON writers) the process becomes exponentially slower as the string grows.  text() however can concatenate any number of strings into one just as quickly as + can concatenate two.  Since the list allows us to know ahead of time how many strings are being combined, we can minimize the number of concatenations.  I could possibly make it even faster by reversing the code (so that small concats happen first), but it's so fast right now that it would only be noticeable in high frequency code.