Я думаю, что они пытались уменьшить объем развертывания и упростить интерфейс. Это и, вероятно, попытка избежать необходимости развертывания большего количества версий библиотек DLL (Unicode против не-Unicode версий).
И да, это правда, что они поддерживают только Unicode.
Но это не означает автоматически, что для хранения требуется 2 байта. Вы можете закодировать это на уровне базы данных, чтобы в основном удалить первый байт, когда он не нужен. Многие движки баз данных делают это как средство сжатия в Unicode.
Это просто означает, что любые записи, которые используют двухбайтовый набор, имеют незначительные накладные расходы на дополнительный маркер, сообщающий движку, что последовательность использует два байта. В противном случае один байт может быть сохранен на диске и расширен как часть чтения RowData.
Большинство компактных баз данных всегда используют форму сжатия по длине прогона, когда они фактически помещают байты на диск для экономии места. Формат, в котором вы видите его, когда он выходит из движка, редко совпадает с тем, что на самом деле хранится на диске.