There are plenty of ways to answer this question, but before we start, the first issue to address is - Is it your problem to solve? Are you expected to mentor less experienced developers? are you expected to cross train your team mates into technology that they are not as familiar with? Do other team members allow you to perform these roles without issue?
Hopefully the answer to the above question is yes. If the answer is no, then you need to talk to the person who's problem it is. (your boss?)
The first step is to figure out what are acceptable end solutions.
This might seem obvious, but there are different outcomes that may alleviate your pain. The best outcome may be that he becomes a social and productive member of the team, contributing efficiently and effectively to project delivery, but that may not be credible. Other good outcomes could be that he is moved onto a different project, where he is more competent to deliver, and able to work in a team of one. It may be he is completely incapable of thinking like a programmer and is better suited to support. There are plenty of other solutions out there if you think creatively.
Personally, I'd invest in a beer for the guy. Chat to them out of the office in a relaxed way. As part of the conversation I'd ask them about how they think work is going? ask them what they would like to be doing in a few years time, and let them know that you want them to succeed, and will help them, if they want with the challenges they are facing. Remind them you were inexperienced once, and got to your level by asking for help and learning from more experienced programmers too.
There are techniques that may help this person understand what they need to do. No doubt almost all the answers here will mention pair programming, but there are also other ways too, that can help with the more autistic developers. for example, you write the unit tests, he writes the code often helps with gaining confidence and focusing the developer on the task at hand, whilst keeping some independence in his work space.
If you manage to gain their cooperation, It may also help at the planning stage to have the developer propose their design, and provide a time estimate for each of the tasks. Allow them 2x their time estimate for any task without issue, but when a task has already taken 3x or 4x the estimate, that's the point to interrupt and insist on an update of the task status.
At the end of the day, if they are refusing to accept any assistance, are continuously making project delivery unpredictable, are producing more bugs than features, then the future of this project is at risk with their continued participation on it.