Tampermonkey isn't better than using a Chrome extension, but it's less friction for a developer to build and distribute a cross browser script. If they build it as an extension, they need to target multiple browsers and get it deployed to the Firefox/Chrome web store.
I love userscripts. Aren't we all using https://github.com/violentmonkey/violentmonkey now though?
thought I realize "if it works it works", https://github.com/Tampermonkey/tampermonkey
Userscripts are also less friction for the user. At least for some level of triviality.
I would say only go for extensions over userscript if you need a settings menu (or any of the APIs the sibling comment mentions).
If you can read JS and the user script is not huge, I think it makes a huge difference.
Apart from that, there are APIs exclusive to extensions, e.g. instrumenting client-side communication among tabs with different origins, listing all tabs, basically accessing a special API that sits on a higher-level context, and, while gating certain functionality behind user approval, and forbidding other functionality completely (at least in Manifest 3.0), extensions with the corresponding permissions can do more than a script running in the page context. They can inject these as well, though, even overriding CSP sometimes, as far as I know?
The main problem with these permissions, and WebExtension 3.0 partly was an attempt to improve this, or at least claims it: most people give a second of doubt at best when installing an extension, as long as they think it comes from a trusted source.