Не на всех языках есть построитель строк.
C, например, даже не имеет строк.
В C ++ std :: strings являются изменяемыми - их можно изменить, поэтому нет особой необходимости в отдельном классе построителя строк.
В C # (и остальной части .NET) строки неизменяемы - их нельзя изменить, только заменить. Это приводит к проблеме, вызывающей необходимость в StringBuilder.
Технически, строки .NET являются ссылочными типами, претендующими на тип значений. Это было сделано для того, чтобы они действовали как родные типы (int, float, decimal).