carriers have to pay to have the updates added to their network, as well as the testing the carriers need to do, it's an expensive proposition for them. Multiply that by more than one android handset, you have a headache for the carrier that they really don't want.
HTC, or any other handset manufacturer, has to be asked by the carrier for the update, the carriers are actually the customers of the device manufacturer and they make the updates specific to the carriers desires. Thats where the crapware comes in..
So even tho it may behoove the carrier to buy these updates and invest the monies, it's a gamble as to what they will do as they weigh the cost benefit of doing so. They may piss of customers in the long run by not updating the software as it comes out, but they already have you in a contract. This will work for carriers for awhile untill the public gets tired of it, eventually.