Поскольку указатель базового класса может указывать на экземпляр базового класса или любого производного типа. Производный указатель может указывать только на этот производный тип или любой его подкласс.
struct Base {};
struct Derived : Base {};
struct Derived2 : Base {};
Base* p = new Derived(); //Fine, Derived inherits from Base
Derived* d = new Base(); //Not fine, Base is not an instance of nor derived from Derived.
Derived* d2 = new Derived2(); // Also not fine, Derived2 derives from Base, but is not related to Derived.
Что касается причины: в общем случае базовый указатель является более общим, чем производный указатель. Как таковой он знает меньше о наследуемом типе. Производному указателю нельзя присвоить указатель на базовый тип без приведения просто потому, что он не может определить, относится ли базовый указатель к производному типу или одному из его потомков.