As someone whose favorite pokemon character is Gary... Paul's Ash's best rival, no competition.
Don't get it twisted, Gary's a great character, it's always a good time when he's on screen because his whole thing is that he's a massive prick. And his dynamic with Ash is one of the best in the series, it's just not good as a rival dynamic.
For starters, he's just never around that much. Gary just pops in every now and then to say "haha hey loser how's it going, still better than you see ya" and that's it. And see that would be great, (and it is), but except for the 10 badges scene it's never about how skilled he is as a trainer. Gary almost exclusively just flaunts his wealth and that's it, it's not about Gary being a better pokemon trainer than Ash, it's about Gary being more rich and popular than Ash.
This is of course fixed in Johto, Gary goes through his character arc and starts showing Ash he's a better pokemon trainer instead of Professor Oak needing to tell Ash that. The problem is Gary is never there for most of Johto.
And also the thing with rivals is they should be on mostly equal footing, there should be some competition, and for most of the original series Gary being comically better than Ash is like his entire thing.
His appearance in journeys as Goh's rival doesn't help this. Gary is recontextualized a bit in journeys as someone who thinks the best way to help people reach their potential is through tough love basically, nagging at their insecurities so they want to spite him and improve. This is really good characterization, but it makes him more of a really good mentor character than a rival character.
Like I said, Gary's a great character! The way he goes about motivating people is genuinely fascinating and that's why he's my favorite! But the dynamic is that of someone who knows everything better than someone else, that's a mentor.
Now compare this to Paul. Paul's beliefs are the antithesis to like, the main idea of pokemon. He doesn't care for things like being friends with his pokemon, he gets the strongest pokemon he finds and if it's not strong enough it's out. These beliefs aren't actually very special on their own, this is just Giovanni's whole prerogative.
What makes Paul's ways work, is unlike Giovanni or any other run if the mill villain character, Paul isn't villainized. His way of raising pokemon has legitimate validity given to it, because it works. Ash battles Paul over and over and the closest he came to winning until the league was their first battle's tie. What's more is none of Paul's pokemon except Chimchar ever seem to have any issues with the way Paul trains them.
This puts Ash's ideals about how pokemon should be trained into SERIOUS question. Paul's existence actually asks if the way Ash, and by extension the entire series was right in the way you're supposed to treat pokemon. Paul is sort of like baby's first deconstruction.
Even though Paul never loses to Ash, he's way more equal with Ash than Gary. They've been to all the same regions, fought all the same gyms (looking at you 7 unidentifiable badges in Gary's badge case) and both fought the battle frontier, though only Ash won.
Paul doesn't know anything Ash doesn't, Paul isn't doing anything BETTER than Ash. Paul is Ash's opposite not his superior, which I believe makes him the perfect rival.