Airlines can charge all they want for a checked bag that is too big to carry on. They should not charge to check a bag that is small enough to carry on. This would avoid giving incentives to passengers to carry bags on, where the external costs in terms of delays and crowding are high.
I think that strikes the right balance. In other posts, I declared American Airlines a "Microeconomics-free zone" and linked to a pretty smart analysis that suggests that bag fees may not yield any additional revenue for the airlines.