Being able to work with people you aren't necessarily going to be friends with is the sign of a professional attitude. You have to have the social skills to bridge the gap in order to play the game. Your friend simply isn't willing to play the game, either because of his own feelings of superiority or social ineptness in professional terms.
In my opinion, your friend might be a good programmer, but he is a lousy professional. He lacks the skill set that is necessary to be one. You may have arguments about how to get things done, but those are normal. The ability to deal with these situations in a way that, in the end, everyone agrees on the way to go forward is a professional skill and a condition for good team work. From what you describe, your friend needs to learn how to do this.
Luckily, both can be addressed through either self-help, or better yet, the help of a workplace coach.
As an illustration, I'll provide you with some situations I've been in and compare them.
In one situation we worked in a team where we developed a mid sized product in the vacation home rental business. This team was very diverse, and we had great interaction. This wasn't because we were friends, but we had respect for each others' skills. This lead to a great attitude that was reflected in the standards of workmanship and in the way we supported each other. All in all I'd say these guys were a great team to be with. I was only an intern, but I would have loved to go back there. (unfortunately, they folded in the crisis) If anyone got sick, the fact that we all had done our bit to contribute to the big picture helped to cover for each other. the discussions we had left no stone unturned, but at the end we had a good understanding why we made the choices we did, and we all knew how to progress from there.
In another company I worked for, the situation was pretty much what your friend was looking for: Developing e-commerce websites for small and medium sized businesses. (and a few big ones) These developers for the most part had developers work on their own projects, with one or two teams maintaining the sites of the very big customers. From what I can tell the programmers were either skilled people who wanted a break due to other life issues or they started out as unskilled people who grew into the job. The skilled workers were the team workers. But as teams were few in number, overall it could be said that team work was abysmal. The parts that were done together by non team regulars didn't fare well because work was unstructured and often team members were not communicating. If someone became ill, that would usually be a major problem. Nobody was there to fill in the gaps and it would cause costly overruns for someone to fix what was left open, or because of the damage clauses for time overruns. The lack of team work would leave the replacements guessing as to what they should to to finish these projects within their deadlines.
Is there a drawback to working in teams? Yes, working in teams creates overhead in planning and execution because you need to communicate.
Are there advantages to working in teams? Most definitely! Good team players can cover for each other, meaning continuity and a better overall product. One of the main reasons being that you have someone that is watching your back. Although this might create some peer pressure (something that isn't half bad in my opinion) it also provides for much easier problem solving. Nobody is god in the workplace, nor is anyone that inept that they can't contribute. (assuming he/she has an educational background in software engineering as part of their history)
The answer to the question isn't one he's going to like: There is no way around it. He needs to learn how to be a social professional before he'll get a good job. There's no fool proof way to trick the interviewer. The interviewer will probably punch through the facade with a follow up, whatever his answer is going to be.