Incredibly well said - that's the point I was reaching towards and couldn't quite articulate perfectly, apparently. Ideally, we'd call out shitty behavior and change that behavior. I didn't mean to suggest a "my way or the highway" attitude; rather, my point is that we shouldn't keep quiet when someone's being a jerk.
What you're talking about is rejecting cynicism, assuming things can change, believing things are worth changing, and being willing to put in the effort to call out the jerks. As long as you do it constructively, you end up humanizing people who probably need it--and you might even make a difference! So, for all our sakes, please keep it up.
If the person thinks the greatness and contribution of their work is somehow dependent on the antisocial behavior, then it's hard to convinced them to separate behavior from action.
As a side-note I think this kind of asshole behavior is as prevalent in non-technical types as technical types.
http://github.com/raganwald/homoiconic/blob/master/2009-05-0...
UPDATE: Thinking about the OP, I wonder if seeing behaviours as simple and people as complex actually helps you be intolerant of bad behaviour.
If you believe that some people are assholes, you have very little in the way of options for dealing with them: Purge them from your life, wall them off so their damage can be contained, or accept them and their behaviour wholesale.
But if you focus on the behaviour, you can try to negotiate: "You are a genius, your work on ___ is brilliant. However, this behaviour ____ is unacceptable, please stop doing it. Here is why..., Here is something more constructive you could consider..."