Personally my attitude is very simple: The customer is always right.
As long as my bills are paid, I’m not interested in arguing with a client. If they request something then no matter how much I disagree, then I’ll do it. I know this is a bit counter-intuitive because it means going against UX principles to give a client something that isn’t usable, but on a personal level this doesn’t bother me. If a painter is hired to paint a house, and does all the work and then the owner says “I thought I wanted red but it looks like trash, so let’s do it all blue” and then pays the painter to re-do the entire house in blue, then there shouldn’t be a problem. If the client is happy in the end and pays for the work, then everything should be just fine.
Professionally my attitude is also very simple: I am the voice of the user.
I have an obligation to my employer to be the voice of the user and express my opinion. If I see a mistake being made or something that could lead to less user satisfaction or reduce usability then it is my obligation to make an argument. As long as a client is being led down a path away from usability and best practices for user experience it is my aim to right the ship. The food chain goes– client creates a product, client charges customer, customer pays client, client pays me. Albeit indirect the user is actually paying me. The more they pay the more I should get paid (theoretically), so it is always in my best interest to improve the ROI. Whether a client sees things this clearly is a direct measure of my personal evangelism skills, but I don’t think it’s my job to educate a client. It is my job to voice my opinion on behalf of the user and then to do the work I’m paid to do.