Public policy like this just makes me shake my head. No doubt the crafters of such legislation had the best intention. But they broke the cardinal sin of problem solving: they poorly defined the problem, and thus ended up with an ineffective solution.
While there may be a correlation between age and the risks of abusing alcohol, having some arbitrary cutoff age seems ridiculous. Why 21? Presumably we'd have less alcohol abuse if the age were 22. Even fewer at 25. Heck, we'd have none whatsoever if alcohol were outlawed for everyone!
Oh wait. We tried that. It didn't work. So why do we think that an age-specific prohibition will work today?
I think a better definition of the problem is that we have far too many alcohol-related accidents and deaths. Our goal is to minimize them. And while teens and young adults may be disproportionately responsible, they are by no means the only contributors.
So here's my public policy suggestion. Tie federal highway funds to the total number of injuries and deaths on the roads, disturbing the peace citations, and alcohol poisonings. Note that we don't want to just count "alcohol-related" incidents. That would only encourage states to game the system be very conservative when reporting their numbers.
Now that we're tracking the right metric, we can start to minimize it. There are plenty of ways to do this. Require all patrons to pass a breathalizer before they can leave any bar. Have an alcohol buying license (like a driver's license) that requires training and passing a class. The license can be revoked for bad behavior. Charge a "youth tax" on alcohol bought by 18-21 year olds (just like auto insurers charge them more).
But no matter what the solution, now that we've tied the carrot/stick to the right metric—alcohol-related incidents rather than simply age—we can encourage the right behavior.