TL;DR: Firefox used to have a great extension mechanism based on the XUL and XPCOM. This mechanism served us well for a long time. However, it came at an ever-growing cost in terms of maintenance for both Firefox developers and add-on developers. On one side, this growing cost progressively killed a...
An old article but provides a detailed view on the choice of removing the old XUL addons
XUL was HORRIBLE to write, implement, and debug. Been there, done that. It was also 0% portable.
WebExtensions (even if there are some technical limitations and some browser manufacturers decided to intentionally cripple some of the APIs) are in general so much better. You have proper toolchains for development, translations, testing, and publishing. And it is pretty much portable to all browsers. You don't even have to port anything 99% of the time because it's just compatible.
By design, WebExtensions is more limited than the promiscuous extension mechanism. By design, it also works better. Most of the Firefox development tax has disappeared, as only the WebExtensions API needs to be protected, rather than the entire code of Firefox. Most of the maintenance tax has disappeared, as the WebExtensions API are stable (there have unfortunately been a few exceptions). It is also much simpler to use, lets add-on developers share code between Firefox and Chromium add-ons and should eventually make it easier to write extensions that work flawlessly on Desktop and Mobile.
With uBlock Origin and many other extensions working (almost) flawlessly on mobile, I'd say they were spot on. Almost, because some aren't comfortable to use because they aren't made with touch and small a screen in mind.