Значения столбца VARCHAR (MAX) будут храниться в строке таблицы, если позволяет пространство. Таким образом, если у вас есть одно поле VARCHAR (MAX) и оно имеет размер 200, 300 байт, скорее всего, оно будет храниться в одном месте с остальными вашими данными. Здесь нет проблем или дополнительных затрат.
Только если все данные одной строки больше не помещаются на одной странице SQL Server (8 КБ), только тогда SQL Server будет перемещать данные VARCHAR (MAX) на страницы переполнения.
Так что в целом, я думаю, вы получаете лучшее из обоих миров - встроенное хранилище, когда это возможно, переполнение хранилища, когда это необходимо.
Марк
PS: Как указывает Митч, это поведение по умолчанию можно отключить - однако я не вижу веских причин для этого ...