It took me a longer time than I liked to realize that the end user didn't care at all. To them it was magic and they just want it to work. And you're right, most shops don't care how it's coded either. Once I realized that it gave me some freedom to once again enjoy my work. I still get frustrated from time to time, but at least I know why and can shift my thinking when I realize I'm headed down a negative path.
Most users are as you describe, but I made it my mission to educate them on what they were asking for when requesting a software change, and why one change might take two or three days, while another takes a month or more. I'm not didactic about it, just providing good explanations in terms they can understand. This makes them better understand that I'm neither a wizard nor a plumber, but someone who uses the ability to break complex problems down into a collection of small, simple, eminently-solvable pieces, and builds the complex solution out of those simpler solutions, sometimes using a bit of insight, creativity, and mental brilliance to achieve economies of scale.
The bonus, for me, is that occasionally there will be a colleague who gets it, someone who doesn't get that glazed look on his or her face as my words pass in one ear and out the other, and who can become a true partner in the quest to maintain, improve, and extend the software's capabilities. When you find someone like that, it makes the effort seem worth it.
I've done the same with the Account Executives where I work. Some get it more than others, but most only get it part of the time. Still it's better than nothing.