You have few options here imo. But FYI - I am only a part time shrink jk.
I didn't quite understand if you said that you can or can not loose him, assuming you can't at this moment.
He is spending minimum half of his daytime hours with you, right? Try to influence what goes in, you will most likely influence what comes out.
Silly as it may sound, but what radio or TV station is on during your working hours? If it's a talk radio, change it to whatever music you both can appreciate.
Implement some kind of training procedure (i know you/him whatever, don't think he needs it) just to keep him busy (he is going to complain about that too, so be prepared) when he is not working on the cars. Make you shop environment more fun for him, he must like something. Please note I am not promoting pole dancers or anything like that
While doing it all, try looking for a replacement. Not saying you must replace him, but if it comes to that, better to come from you and expected rather than from him and with two weeks notice. I do believe that people can and do change, as rare as it may be, but only under extreme external circumstance.
One more thing, try to see how often you are complaining yourself. Just put a tick-mark somewhere you can refer back to at the end of the day/week. Sometimes the employee is subconsciously saying what the employer wants to her. We tend to her others more than we hear ourselves speak...