I've noticed the same thing - I wanted to use regex with oclvanitygen and thought I could just run a regex script batchwise on the generated files, but as you noticed it's very slow. I can't help you with that, but:
(PS- the reason for the regex is because 93.94% of bitcoin addresses with a balance greater than 0 are between the prefix 121 and 1Pz which cuts down on the total amount of variables to try and check against my keys script.)
I'm pretty sure this has to do with the probability of those addresses existing rather than the probability of them having a balance != 0. This means that trying them does not increase the time taken to find a balance > 0 since the probabilityof generating these addresses is much lower as well.