Существует абсолютно веская причина, по которой это не было сделано в первую очередь - просто потому что сериализуемый базовый класс не означает, что производный класс естественным образом.
Черт, object
является сериализуемым - если сериализуемость наследуется, это будет означать, что каждый класс в .NET будет сериализуемым:)
Вы также не можете "переопределить" это - вы должны указать это для каждого класса. Я думаю, что на самом деле это хорошая вещь - когда вы добавляете атрибут, вы должны выполнить мысленную проверку класса и убедиться, что он действительно имеет смысл сериализовать его.