В основном все это для того, чтобы при создании наследников не менять существующий код.
Цитата:
старый дедовский способ construct
Да, способ старый, да он понятен большинству разработчиков. Но этот способ требует изменения уже существующего отлаженного кода для добавления наследника.
Цитата:
передать ему параметры в new
new с параметрами в описании BP не рекомендуется уже с DAX4, то есть более 10 лет. Кстати и construct с параметрами не рекомендуется к применению с тех же пор.
Цитата:
вызывающий класс и так ВСЕГДА должен знать какого наследника он создает
Достаточно спорное утверждение. Тот же принцип Барбары незабвенной Лисков говорит как раз об обратном - код, использующий какие-то классы из иерархии не должен делать предположение о том, какой именно наследник используется, а наследники класса должны сохранять поведение базового класса.