по тому что потомок может иметь новые свойства, которых не у предка. попытка их использования приведет к гарантированному сбою программы. по этому такое присвоение запрещено в принципе
допустимо только присвоение переменной типа предок, экземпляра типа потомок
в контекстах, где надо использовать и предков и потомков, в том числе несколько поколений, следует использовать типы переменных самого старшего предка, и использовать свойства и методы только те, которые были заданы у этого предка (хотя у потомков они могут быть переопределены, тогда для каждого экземпляра будет использован актуальный метод его поколения, собственно в этом суть наследования и переопределений)
а экземпляры следует создавать в других контекстах, где определяется какое поколение надо создать в конкретной ситуации этого контекста
обычно методы создания экземпляров называют фабриками и реализуют в виде статических методов (их можно вызывать не имея ни одного созданного экземпляра класса)
ps строго говоря это не особенность C# — это каноны ООП как такового. это ограничение будет действовать во всех языках объектной парадигмы со строго типизацией
при этом, если язык допускает перегрузку операторов (а C# допускает) можно переопределить оператор присвоения для создания неявного приведения типов
в теле такого оператора надо будет создать экземпляр базового класса и задать ему свойства на основе значений экземпляра производного класса, и вернуть его как результат выполнения оператора
надо понимать что передать особенности потомка при этом все равно невозможно. можно клонировать только те свойства, которые уже были у предка
и надо помнить что это самостоятельный обьект. манипуляции с ним ни как не отразятся на экземпляре класса потомка. надо будет быть очень внимательным при дальнейшем выборе — каким экземпляром продолжать пользоваться?