Простая причина в том, что так было с первого дня.
Кроме того, Reflection стоит дорого. Зачем это делать, если не нужно?
Кроме того, XML Serializer не предназначен для сериализации каждого класса в мире. Он предназначен для сериализации классов, предназначенных для сериализации. Таким образом, нет ничего сложного в том, чтобы убедиться, что необходимые данные находятся в открытых полях и свойствах открытого класса с открытым конструктором без параметров.
Только при попытке сериализации типа, не предназначенного для сериализации, возникают проблемы.