На всех перечисленных вами языках объекты содержат конечный (и обычно короткий) набор свойств. Каждое свойство может содержать рекурсивную структуру (то есть список), но оно по-прежнему представлено одним свойством в объекте.
Я не вижу необходимости рекурсивно вызывать конструкторы. Это похоже на странную рекурсию использования для инициализации нескольких хорошо известных свойств.
Как вы сказали, вы можете вызывать конструкторы не рекурсивным способом для совместного использования кода на некоторых языках, которые вы упомянули.
C #: Использование конструкторов
public Employee(int weeklySalary, int numberOfWeeks)
: this(weeklySalary * numberOfWeeks)
{
}