The real problem, IMHO, is that there are not substantial penalties (in most cases) to airlines for excessive delays, cancellations, etc. Therefore there is no incentive for them to maintain slack in terms of reserve aircraft, crews, etc. The major penalty is the lack in "goodwill" of passengers. However when many people are in locations with one dominant carrier, there is little alternative to switching without major inconvenience.
An analogy (perhaps some will trash). I have a choice of perhaps 3-4 major grocery stores plus a plethora of online sources and specialty markets from which I can choose to buy every week. Therefore to compete, some choose to do so on price, some on quality, some on specialized foods, etc. A store knows that if I come to buy item X there, unless they have inventory they will lose my business for that item (and I can rapidly go elsewhere). However if I book a ticket, lets say PHL - LHR with carrier X, and they cancel a flight, I am stuck with taking the next flight with that carrier and in most circumstances cannot take my money and go to carrier Y.