With MV2, every request must be filtered with slow, JIT, garbage-collected JavaScript code. In MV3, filtering is handled by native browser code using the list provided by extensions. UserScripts could be used to modify the DOM, but that requires power users to manually enable it.
There is a limit on how large the list can be, depending on the browser.
JavaScript really isn't that slow. JIT compilation can wind up faster than AOT compilation. And much of the APIs called by JavaScript is natively-implemented browser code. JavaScript is faster than C# yet people implement games in C# (not the engine cores, but that's a very similar situation to JS) and don't bat an eye.
that is theoretically true. but i switched to the v3-compatible ublock origin lite a year ago and i've noticed essentially no difference in the performance. all the ads are blocked, just like they were with the v2-compatible adblocker.