Стандарт C # не будет определять поведение класса библиотеки BCL, поскольку он не имеет ничего общего со спецификацией языка.
Насколько я знаю, фактическое поведение не определено ни в одной спецификации и зависит от реализации.
AFAIK, реализация MS удвоит емкость, как только будет достигнута текущая емкость.
См. это и это предыдущие SO вопросы.
Обновление:
Это было изменено в .NET 4.0. как описано Гансом в его ответе . Теперь используются веревки , добавляя дополнительно 8000 символов за раз.
MSDN , однако очень осторожно указывает, что фактическое поведение зависит от реализации :
StringBuilder динамически распределяет больше места при необходимости и соответственно увеличивает Capacity. По соображениям производительности StringBuilder может выделять больше памяти, чем необходимо. Объем выделяемой памяти зависит от реализации.