They're both perfectly valid; but the expression style [0] is shorter and more obvious, especially compared to Optional. Even the documentation for Optional states [1]:
Note that this is not the same concept as an optional argument, which is one that has a default.
[0]: https://docs.python.org/3/library/stdtypes.html#types-union