Cap range is for all all-star potential players. Each individual player will have a specific, unknowable cap value somewhere within that range. You may have just gotten unlucky and have a player whose cap value is 20.01 or something like that.bbAlso, keep in mind that the cap value you see probably does not take into account sub levels (unless you've been updating every week of training he's ever had, and maybe not even then). So if he has high sublevels, his cap may be more like 20.5 but the system does not register that. It's very possible he's capped out.
On the other hand, I once had a star potential player (18-20) who I trained to a cap value of 20.75. Of course I had to give him a full season of training to get those extra pops, and he was 5'10" so that made skills train much faster, but it can be done.