I have been perceived as argumentative at more than one time in the past. Now that I have pretty much the most people-skilled manager I've ever had the pleasure to work with, I've had a chance to really dig down into what those behaviors are and exactly why I'm doing them. I am not meaning to imply that your coworker is exactly like me, but I just want to give you another perspective on the situation so that you can develop your skills and his skills should my perspective prove helpful and if you actually want to do this.
That being said, I'm going to word this as if his experience were my experience, because all sorts of wiggle words just make it harder to get the point across.
He probably genuinely has nothing against you.
Instead, he's frustrated. There are things in the workplace that just completely rub him the wrong way, and he's trying as best he can to smooth those out. Since you've made it plain that you're not receptive, he's trying to avoid your ire by concentrating his efforts when you're not around.
To the extent that he sees you as preventing him from taking action to make the situation less frustrating, yes, he probably is angry at you and may even vent about that anger. Whether that anger can be allayed by working through his frustrations is probably a function of how long it has gone on and whether he is the kind of person who can separate frustration with a situation from frustration with a person, and whether he and you can let go of past bad feelings once everything is cool.
He probably is not completely aware of the causes of his frustration.
A lot of times, when I'm frustrated, it turns out that there are many layers to that frustration. For example, I was very frustrated that my coworkers didn't have what I considered basic foundational knowledge. Digging into it, part of this frustration was that I felt I had been directed to program as if all the members of the team were expert programmers, but I didn't feel that my colleagues had the expertise to be able to understand most of the design patterns I was using. Underlying that was a concern that we are using a language that is falling out of popularity, and I knew that if my coworkers couldn't comprehend my codebase, I would be "stuck" in that language for as long as I stayed with the company--making it necessary for me to leave the company before I really wanted to in order to stay employable.
Even just expressing that to my boss made me a lot calmer and less frustrated.
How to get at and fix the cause of the frustration.
I am starting to get to the point that I can catch what's going on and head the frustration off at the pass, but your coworker probably hasn't been given the space to work this stuff out like I have, so you will need to help him if you would like him to stay.
The first thing I do when I start to get upset is really try to understand what it is that is at the root of the issue. You may have to ask him a lot of questions to get to that, and he will probably be very prickly. He may also not be very forthcoming, since you have essentially told him to keep it to himself. I can't really tell you how to get past your history--maybe you could try taking him to lunch or going out for a beer.
One thing you need to realize is that he probably feels that he has told you what is bothering him and that you've ignored him, whereas from your perspective you may not be aware of more than vague hints of what is wrong. From his perspective, it is either probably very obvious what you should be doing to fix the problem or he hasn't even thought about the fix he's so caught up in his frustration. It probably hasn't crossed his mind that you don't understand why he's upset and you don't know what to do about it even if you do understand.
Once you have gotten to the core of the issue, it should be obvious to at least one of you what would make the situation right, or it may be obvious that there is nothing that realistically can be done. In the first case, if there is no compelling reason not to make things right, make them right. I suspect that even in the latter case, the fact that your coworker has been fully heard will be enough to content him until the next issue arises.
If there is a pattern of working through issues rather than ignoring them, he will probably start to place a great deal of faith in you and may come to a point where he can do this on his own. At that point you've done him a great favor, because the pattern of frustration-->lashing out-->bad relations-->probably getting fired will be broken, and he will be much more employable for the rest of his life.
Communications with the rest of the team
It's likely that he is picking up on your desire for him not to express his ideas to the rest of the team, and that is probably adding to his frustration. I think you would do better to channel his ideas. When he raises an issue and you can see it's a valid one that needs to be solved. Assign several members of the team to get together at a specific time and hash through the issues and come up with a solution. This prevents problems from festering and forges stronger bonds of problem-solving on the team, as well as giving him a constructive outlet for his need to express himself.
So, your coworker may be higher-maintenance than you'd like, but I suspect that at least part of that is because he cares so much about what he is doing. Only you can decide if it's worth it to put in the time to channel that passion, if you even have the time. If you don't, it's probably kinder to cut him loose now and maybe he can find a team where that is exactly what they are looking for.