If talking through the problem with him - usually the go-to answer for this type of question - doesn't work, then you have to move on to the next step: impose consequences for his behavior.
The best way to do this is to kick him out politely. Sit him down privately and say that games are meant to be fun for everyone, but he is clearly not having fun. Phrase it that way, that it appears he's not having fun - because if he really isn't enjoying himself, then he'll see your point; or he might say that he is enjoying himself, at which point you need to explain that he's acting as if he doesn't. Or, if his fun is derived from nitpicking you, he'll be forced to own up to that (or deny it, in which case again explain that his behavior suggests he isn't enjoying himself). Add that he is, in turn, making the game not fun for you. If you have statements from other players who also don't enjoy his behavior, you can add "and others in the group", but absolutely don't name names. Then tell him that since he doesn't enjoy your game, it's time for him to stop playing. Tell him his character will be dealt with appropriately, that you wish him the best, and that you hope to someday game with him again in a setting more enjoyable to you both. End the conversation there - get up and walk away if you have to.
It absolutely sucks to have to boot someone from your game, but if he's this much of a problem and you've already tried talking to him, with no success, then you can't keep him around. He will burn you out, make your game toxic to you and probably your other players, and generally ruin everyone's good time.
There are other ways to impose consequences, such as imposing an in-game penalty on him when he starts trying to control your NPCs, docking XP, or verbally chastising him ("You do not control the NPCs. Please be quiet."); however these usually feel punitive to the problem player and will probably just make things worse. But if you honestly believe that he can be convinced to stop nitpicking, you can try them. You should note that using these will probably end up being a passive-aggressive way for you to kick him out anyway, by making him so miserable and frustrated that he table-flips and walks out - not the ideal solution. It can also make your other players upset with you and sympathetic to the problem player, since it appears you're "unfairly" picking on him - so again, use with caution.
Roles Can Be A Bummer
Making actions/options not available to people can force people out of the magic circle pretty quickly. Sure, roles can help people feel special, but it can go overboard. This does not mean that the rogue shouldn't be stealthy, or that the cleric can't be tank-y, but not being able to use or do something because of an arbitrary class restriction breaks the circle, which means less fun for everyone.
Sometimes, multiple people actually can do the same thing, and that should happen sometimes. If every task you throw at the player characters cannot be accomplished except for 1 person's specialization, it may be a harder adventure than these players (as a group) are fit for. Not that there can't be a situation where you need a particular player to do a something, but that it shouldn't happen all the time.
Perhaps It is a Matter of Perception
So maybe this player is simply just does not imagine the same thing you do. You can try to reinforce what you envision by describing what is going on. Is she/he making informed choices? Does she/he realize what the gravity of the situation, or how her/his character has certain strengths?
Does this player realize the cleric is running around in thick armor, while that player's character is running around in normal clothes? For example, if I think the cleric is running around in normal clothes, and goes into combat and comes out unscathed, I could run in my normal clothes, and also come out unscathed.
If this is the problem, you simply need to be more descriptive! Describe how the cleric is wearing armor, or how the rogue is especially cat-like, and how this player's character is not.
For Games Which Depend On Roles
It may be time to have your other players step up. Have the cleric yell at the other character to stay back, or that the cleric "has this." Alternatively, the cleric may ask "PEASE SUMMON THIS TO HELP ME!" as he charges in.
If the rogue attempts to sneak around, the rogue can give specific instructions; "Can you make a distraction over there?" "Wait here, and if I'm not back in 15 minutes, go get the others to rescue me." Or even: "this looks super dangerous. I don't think you'll make it. We don't want to get ourselves killed, yeah?"
In short, give him tasks, or have the other players give him tasks to help with things. Talking is a free action in combat; use it. This is especially good for players who may be experiencing some mental handicap; it gives them something concrete to act on. It allows them to contribute (which feels great and is fun) without going through negative experiences.
Finally, a player or the DM can specifically highlight when certain actions will require a specific specialization, and who has that training. If it becomes obvious that a task is dangerous and requires training, then most people leave it to the person with the training. The DM can further forbid people without specialization from trying, stating that it's obviously too hard. This is more "hand-holdy" than some people like it, but sometimes people just need their hands held.
Talk About It
Talk with the player about the roles. What is her/his character good at? What should she/he focus on? These other characters have something special about them, what is she/he special at?
Talk about how their character is so good at magic/whatever else, and how they should try to make their magic/whatever else be the solution for the current situation. (After all, we're solving these situations using our strengths, use your strengths to help solve it!)
Tough Love
Finally, you may have to resort to letting the consequences of this player's action happen. Let the events, despite other character's best efforts, happen. Talk about how that character was not focusing on what they were good at, or how their play-style does not match up well with the class they chose. Make a new character that does okay at everything, such as most games' version of a "bard." Note: this does not mean make a character who is rule-breaking and superior to all the others, but one that stands a decent chance at performing many things, and isn't a large risk to the success of most tasks.
Best Answer
Maybe he's a Watcher
In the Dungeons and Dragons 4th Edition book "Dungeon Master's Guide" there exists some very useful advice for running the game that is applicable to nearly every RPG out there. One section of advice addresses different player personalities, including the idea of "the Watcher."
It sounds to me like this person wants to be a part of your group, but doesn't want to get involved in the game mechanics of character creation. Why not make a character for this player, and give them very explicit cues to use that character's abilities from time to time?
Instead of trying to turn the player into something he's not (a better role-player) you might just accept and be thankful to have someone willing to participate and find ways to accommodate rather than educate.