«... класс String предпочтительнее для операции конкатенации, если конкатенируется фиксированное количество объектов String. В этом случае отдельные операции конкатенации могут быть даже объединены компилятором в одну операцию.
Объект StringBuilder предпочтительнее для операции конкатенации, если конкатенируется произвольное количество строк..."
http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx
Что меня смущает, так это неопределенные слова «может быть» в первом абзаце. Разве не должно быть "наверняка будет"? Потому что без объединения конкатенаций в одну операцию повторное выделение памяти String сделало бы его абсолютно хуже StringBuilder.