While I heartily agree with the OP that any airline that cancels flights ought to do the maximum not only to accomodate the passenger but also to convey a sense of sympathy or responsibility, the airline's contractual liability is pretty minimal.
Regarding the disparity between the passenger's obligations in case of a change, versus the airline's obligations, the one substantive difference is that flight cancellations are made because of factors outside the control of the airline (at least that's what they will always tell passengers) and the contract of carriage stipulates that the airline's only responsibility in this case is to make a legitimate effort at accomodation.
And, by the way, if a passenger needs to make a change because of a factor outside of his or her control (such as illness) the airline will accomodate the change at no cost, based on appropriate verification of the illness.
The system is frustrating but the fact is it's pretty amazing it works as well as it does with so many flights flying nearly full, packed so tightly together, allowing virtually no leeway for equipment failure or weather problems.
I do agree, however, that CO's line people could generally be a little nicer about it when these situations occur.