Это потому, что сериализатор Xml никогда не обновлялся для поддержки Nullable, поэтому способ, которым он обрабатывал необязательные поля с использованием типов значений (скажем, int, для которого нельзя установить значение null), заключался в том, чтобы рядом с ним было логическое поле XxxSpecified это позволило вам указать сериализатору, учитывать ли значение для соответствующего поля или нет во время сериализации.