Eagle is spot on; 21 is clearly about money. IMO anything above 18 is unnecessary and just about bringing in money (likely to cover scholarships of 'top' players). If you are a starter, I guess it doesn't matter how many are on the roster for games but even if you are the best player on the team, your practice is likely impacted by having more than 18 players.
I see this first-hand with my HS program. Our rosters are around 22 players and having that many involved in a practice makes it difficult. IMO 16-18 is an ideal number for practice although the amount of field space available along with assistant coaches/helpers means that more players is possible (if you have space and extra coaches). If you just run standard drills, it's ok to accommodate 20+ players; if you are working on game-specific situations with lots of decision making, having 20+ players means trying to rotate some in/out and it's just not workable. My subjective opinion.
@lafalafa makes some good points and I'm still strongly of the opinion that if you clearly aren't going to see much playing time (if you are towards the bottom of the roster, you should be aware of it), you should find another team. Practicing (even if the team is very strong) but not playing much (if at all) in games is foolish and won't work out for anyone in the long run.