Создаваемой вами подчиненной строке также потребуется непрерывный блок памяти, поскольку он представлен в виде массива символов (для массивов требуется непрерывная память). Если StringBuilder выдает исключение OOM, вы не сможете построить базовый объект без него.
Если создание строки вызывает OOM, вероятно, в вашем приложении есть более серьезная проблема.
Изменить в ответ на уточнение:
Существует небольшое подмножество случаев, когда построение строки с помощью StringBuilder завершится неудачно, когда конкатенация завершится успешно. Ручная конкатенация будет использовать точную длину, необходимую для объединения двух строк, в то время как StringBuilder имеет другой алгоритм для выделения памяти. Он более агрессивен и, вероятно, выделит больше памяти, чем на самом деле нужно для строки.
Использование StringBuilder также приведет к временному удвоению необходимой памяти, поскольку строка будет присутствовать в форме System.String и StringBuilder одновременно в течение короткого времени.
Но если один из способов вызывает OOM, а другой - нет, это все же, вероятно, указывает на более серьезную проблему в вашей программе.