I agree that companies have a responsibility to listen to and address customer complaints. The problem is that a small percentage of customers create the bulk of the customer support burden. With phone support this gets even more skewed. You can't have engineers do phone support or they won't be able to get any real work done with all the interruptions. You can have engineers investigate and address all complaints that arrive by email. I strongly believe email support that goes directly to the people most knowledgable to fix the underlying problem is the best approach.
Companies that provide bad customer support just don't care. They'll provide phone support if they feel they have to, but they'll outsource it for cost reasons. Talking to people who are friendly but clueless is at least as frustrating for me as creating a ticket that doesn't go anywhere.