Age requirements are a good thing. Players need seasoning before hitting the pros, the seasons are longer, the games are harder, and 18 year olds still have 7 more years physical growth and their body just isn’t ready. The NBA had a serious drop in play when they started getting obsessed with getting players straight out of high school, really the only 2 that succeeded were Kobe and LeBron, the NBA should increase their requirement. It would be better if they could self police, but really only the NHL pulls that off generally making young players they draft hang out in the minor for a couple of years.
The NHL and MBA maintain farm systems. The NBA and NFL do not. That is part of the problem. The NBA and NFL don’t want the cost of farm systems. Colleges want to pay their superstar athletes a pittance. So they feed off each other’s sanctimony.
You forget Kevin Garnett, the player who started the modern 'straight out of high school' craze.
The problem is that whether or not a player is physically ready for the NBA at age 18, he's a legal adult and is entitled to try if he wishes.
The NHL went through a phase in the early 1980s where a lot of 18 and 19-year old players made the league at the same time. Guys like Wayne Gretzky, Ray Bourque, Paul Coffey and Steve Yzerman all started their careers at age 18 or 19 during that time and the 21-team NHL went through one of its best phases.