Почему в конструкторе не могу написать так?
Думаю основная причина почему кажется что это должно работать — это непонимание разницы между функцией в JS и методом объекта. Это не одно и то же, несмотря на то что оба варианта можно вызвать подписав скобочки () в конце :) Да, вызывать можно и функцию и метод объекта, а вот создавать экземпляры методов нельзя.
В указанном Вами примере внутри функции Man вызывается new this.Man. Это означает, что создаётся экземпляр Man, а значит сам Man должен иметь конструктор (грубо говоря быть классом).
Функции в JS имеют конструктор, а методы объектов не имеют. Функции и методы объектов это не одно и то же. Рассмотрим такой пример:const obj = {
   Man() {}
}
в данном случае Man() это просто метод объекта. У него нет своего конструктора. Т. е. нельзя создать его экземпляры через new. Но можно его вызвать:const obj = {
   Man() {}
}
obj.Man();
это корректный вариант.
Но создавать экземпляры нельзя. Например:const obj = {
   Man() {}
}
new obj.Man(); // Будет ошибка. TypeError: obj.Man is not a constructor
А вот экземпляры функции можно создавать. Например:const obj = {
   Man: function() {}
}
new obj.Man(); // Всё ок
для того чтобы создать экземпляр функции не обязательно конечно чтобы она была внутри объекта. Можно и так:const Man = function() {}
new Man(); // Всё ок
При желании можно поискать инфу на тему почему можно создавать экземпляры функции. Говоря вкратце, раньше в JS не было классов, по-этому наследование было реализовано через прототип функции. Это немного нелепо конечно, но в JS можно создавать экземпляры функции как если бы функция была классом. Сегодня в JS уже есть классы, так что лучше использовать их.
Вывод: методы объекта и функции это не одно и то же.
Потому что у вас обычный объект, а не класс.