Is there a functional difference between these two example?
No.
Why would you prefer one over the other?
You could consider the first a bit more self-contained and better expressing intent. Since the properties are defined statically, tools and even the JavaScript interpreter have it easier to analyze the class.
The second form is only needed if you need to add properties that are only known at run time (but that might not be a good idea anyway).
If feel like this is a reoccurring question/problem with new JS syntax. A lot of the new syntax is just syntactic sugar, i.e. it doesn't solve a problem that couldn't be solved differently before.
Of course you can keep doing what you did before and just assign the properties like any other property. At the surface the functionality is the same.
But as I hinted at above, the advantage of dedicated syntax is easier static analysis for external tools and the interpreter itself.