It's less about 'performance' but more energy usage. uBlock Origin, running javascript code has to process and filter often 100+ resource urls on a single page load. In contrast the content blocker compiles into native code 1 time (on list update), and at page load ~300-1000x less processing time required. The user perceived performance might be the same, but the energy usage over hundreds of page load each day adds up quickly.
It's not exactly a 50k hard limit, but varies on each platform. When the filter rules are loaded and compiled, it is tested to see if it crosses a performance threshold. There's been subsequent posts on webkit mailing list and blog on how to optimize for it. Back when it came out, the limit was being hit because developers were directly porting EasyList or other blocking lists directly to the Webkit Content Blocker format. Today, most lists are optimized for the webkit format and significantly smaller than 50k.
Also, a single blocker extension can load multiple lists.