Зачем в конструкторе инициализация вне тела конструктора?
Потому что без такой инициализации невозможно:
1) Передать параметры в базовые классы
2) Инициализировать константы.
3) Иметь поля, для которых нет умолчательного конструктора

Если с первым вроде как понятненько, то второе требует уточнений. Без такой инициализации, все поля в классе должны сперва создастся при помощи умолчательного конструктора, а потом еще раз инициализироваться уже в теле конструктора. Это двойная работа, что нехорошо.

Кроме того, для полей, у которых нет умолчательного конструктора, в таком случае, выходит что нет способа их адекватно создавать не на куче.
в теле происходит присваивание, а вне тела - инициализация
https://ravesli.com/urok-117-spisok-initsializatsi...