I'd prefer to beat him stearnly.
It's tough, but if you want to keep him on the team you or another team leader should speak to him one to one. Calling him out in public would only hurt the situation.
Start by telling him that you appreciate the contributions that he does make. Then describe some observations you've made about his behavior. Ask him if he agrees that the behavior is out of line. Tell him how it makes you and the others on the team feel. Then say something to the extent of "I'd like to continue to have you on the team, but we can't be successful, untill we can all feel comfortable with each other. I'd like your commitment to make an effort on being more of a team player" or something. Continue to emphasise that you want to play with him during the conversation.
If he's not willing to make an effort.... 86 him. There are other players out there just waiting to find teams.