Какая функциональная разница между этими подходами создания объектов в JS?
суть в том что это синтаксические сахары

class и new не нужны
можно без них
Функционально - разницы никакой, т.к. по факту и то и другое реализует одинаковую логику: создание объекта с определенными свойствами. Третий вариант можно назвать функциональным подходом: мы создаем функцию, которая решает свою задачу и не привязываем её к какому-то классу. `new` - просто способ сказать как компилятору, что надо вызвать функцию-конструктор такого-то класса, так и программисту, читающему данный код в будущем, что вот тут мы создаем новый экземпляр такого-то класса. Так же и, например, {} просто упрощенная запись new Object() для создания объекта.