PyPy doesn't have a specialized list for small strings. It might land one in the near future, your findings are a bit weird, but objects might be smaller because of smaller GC headers.
2,292,133 were in prisons in the United States in 2009 [from wikipedia]. Even though I guess conditions are better, 200 000 doesn't sound like that many after all.
The thing is in case of tracing you don't record all paths taken, just the one at the hot point. So say you have if that takes every path every second go, the JIT will compile just one path at first. Then the guard will fail every second iteration, hence the blackhole. Of course at some point JIT will realize guard fails often enough and will compile another path, so you'll get a tree. And so on...
Cheers, fijal