You say you've already tried talking to him about this, and that nothing's changed. If he was genuinely interested in staying with the group and behaving better, you would have seen at least some difference before he slipped back into bad habits. Therefore, since talking didn't work...
You should kick him out (politely).
Keeping someone in a group solely for story or combat purposes, when they are known to have personality conflicts with the rest of the group which have not changed after being addressed in a private discussion, is a recipe for having your group disband. Eventually, your other players will find reasons to stop coming because they don't feel like spending hours of their time being annoyed and frustrated by this guy. Eventually, you will be so frustrated and annoyed by him that you'll look for reasons not to have the game.
Yes, it's hard and awkward to kick someone out of the group, especially if you've been playing with them for a while. But keeping someone around who, in your own words, "ruins the experience" for you and your other players (even, and especially, if you've already tried talking to him about it) is not worth it.
Find a time to talk to this guy out of game. Say that you've come to realize that his play style is not compatible with that of the rest of the group. Say that this style conflict (make sure you blame the style conflict, not him personally) is making the game difficult for you to run, and is making it not fun for you and for others in the group. If his complaints are egregious, you can also suggest that it appears he's not having fun, either (although remember to use phrases like "it appears" and "I think" rather than simply declaring how he's feeling).
Then tell him that you think it would be best for everyone if he finds a different group to game with, one which is more suited to his play style. Be gentle but firm - if he protests, reiterate, "Our gaming styles aren't compatible." Stick to that point, and don't let him derail you with "Well, if you just did X and Y, I wouldn't have to complain" or "if the other players did Z, it wouldn't be an issue." If he keeps pushing it, thank him for his time playing so far and end the conversation - get up and leave if you have to.
Some people have suggested talking to him (again) before asking him to leave; however, I strongly disagree with that suggestion. For one, you've already tried and he hasn't changed, which means that trying again is just going to draw out the process. More importantly, though, the behavior you describe (except the complaining) really does sound like simply a difference in play styles. I've played with people and in groups for whom that kind of metagaming and player interference is normal and even accepted. But since the rest of your group doesn't agree with or enjoy it, you're clashing. He most likely doesn't understand what's wrong, and therefore doesn't understand why his behavior is bad or what he should change. Asking him to act differently when he likely doesn't understand what's wrong in the first place will just make him feel punished. He may even double down on it while trying to "fix" it.
It absolutely sucks to have to kick someone out of your group. But remember, you can always replan your story to take the plot focus off this guy. You can rejigger combats to account for your group's lack of a tank, or ask another player if they want to pick up the slack. But you can't run a game if everyone else has quit because they're annoyed by a guy everyone knows is a problem. If you let him stay, he'll quickly make your gaming experience toxic for you and the other players, and you'll be left with no game at all.