Greasemonkey is the original Firefox extension, the development slowed down/stopped when Firefox changed how extensions work, it was restarted later. It's kind of heavyweight but very compatible with most scripts because it's the original.
Tampermonkey started as Chrome's alternative to Greasemonkey (because the latter was only for Firefox). I don't recommend it, see this[1]
Violentmonkey started as an Opera extension (back when Opera was using the Presto engine and wasn't compatible with Chrome extensions). It's more lightweight in terms of resource usage than Greasemonkey and doesn't contain analytics code. It was later ported to Firefox and Chrome.
If you need compatibility with old scripts your best choice is Greasemonkey. If you need it for modern scripts or to write your own Violentmonkey is fine. Avoid Tampermonkey, they are not to be trusted (proprietary license and analytics).
[1] https://www.reddit.com/r/firefox/comments/6hs59w/tampermonke...
> "There is no "they" in Tampermonkey. It's just me, a developer from Germany [...] I don't have the resources that large companies do have for testing. I have a regular job (40-hour workweek) and besides this I also spent some time with my wife and my daughter. And finally, and this is the most important one, there are too many unknowns. There are forks of almost every browser, each with slight differences and every new browser version can break things. [...] TL; DR: The Tampermonkey developer needs some data to become aware of bugs happening in the wild. You can disable it. All data is anonymized to the developer. No browsing data is collected."