Есть ли функциональная разница между этими двумя примерами?
Нет.
Почему вы предпочитаете одно другому?
Вы могли бы рассмотреть первое немного более автономным и лучше выраженным намерением. Поскольку свойства определены статически, инструментам и даже интерпретатору JavaScript легче анализировать класс.
Вторая форма необходима только в том случае, если вам нужно добавить свойства, которые известны только во время выполнения (но в любом случае это может быть не очень хорошей идеей).
Если вам кажется, что это повторяющийся вопрос / проблема с новым синтаксисом JS. Большая часть нового синтаксиса - это просто syntacti c sugar, то есть он не решает проблему, которую раньше нельзя было решить иначе.
Конечно, вы можете продолжать делать то, что делали раньше, и просто назначить свойства, как и любое другое свойство. На первый взгляд, функциональность одинакова.
Но, как я уже говорил выше, преимущество выделенного синтаксиса заключается в более простом анализе c внешних инструментов и самого интерпретатора.