One major thing that people forget is that the salary cap also comes with a salary floor. Yes, there's a maximum to spend. But there's also a minimum, guaranteeing that teams will at least be somewhat competitive (Pittsburgh Pirates, I'm looking at you).
MLB has a luxury tax, not a real salary cap, and that allows the Yankees to spend over $206 million, compared to the Pirates spending under $35 million. In fact, only 7 other teams can claim they spend at least half as much as the top team. That means 3/4 of the rest of the league can pretty much give up before the season even starts.
Meanwhile, the other major North American sports have an actual cap (the NBA is a bit wishy washy, with luxury tax components). So I don't see why anyone would want to abandon it entirely, considering the NHL just locked out the players and lost a year to implement the cap.
Competitive balance matters. The cap is a way of maintaining that balance, not just through limiting money, but forcing owners to spend a certain amount to maintain a competitive team. At the same time, there are already several ways of keeping players (franchise tags, et cetera) built-in if an owner really wants to keep a player.
Also, party due to the early trade deadline and also the smaller amount of games played, but also due to the salary floor, there are rarely fire sales by owners who have given up on the season, which happens all the time in baseball, basketball and hockey. Teams stay at a general level of competitiveness throughout the season, unlike some of the crud you see out on an MLB diamond or NBA court in the last two months of a season as teams duel for the worst record for high draft picks.
I really can't think of a good reason not to have a cap other than some teams would dominate. And by some teams, I mean us because we've got the best guy in the league to manage us. But eventually that would destroy interest in the league if only 3 or 4 teams had a chance every year.