Вероятно, потому что это была небольшая, простая и неизменная структура данных, очень похожая на целое или десятичное число. Создание структуры в этих условиях делает использование DateTime очень эффективным. Если бы это было сделано классом, это преимущество эффективности было бы потеряно, потому что это потребовало бы выделения памяти каждый раз, когда вы создаете новый DateTime.
Кроме того, сколько вариантов форм DateTime вы можете придумать? (Игнорирование альтернативных реализаций ToString, которые вы имеете в виду.) Это не совсем тот тип, который вызывает полиморфизм.
Обратите внимание, что для использования другой стратегии форматирования для ваших DateTimes, как я думаю, вы захотите, вам лучше взглянуть на другой способ форматирования, чем просто использование ToString. Если вы посмотрите на интерфейс ICustomFormatter в MSDN, вы увидите, как вы можете подключиться к конвейеру String.Format для переопределения форматирования без необходимости поднабора существующего типа.