I've seen a LOT of poor answers for this one already.
First, the things you do NOT want to do. Which you seem to be very aware of already.
- Do NOT stunt his enthusiasm.
- Do NOT stop him forcefully (i.e. removing tasks) from being the over acheiver.
- Don't try to shame, subvert, or do any of those other suggestions.
Any of these things as you are aware is one of the sure fire ways to lose the developer. Either he/she'll become totally withdrawn and become an "average" developer, or they'll just leave the company/project. Either way, you end up with the same result of less productivity, lower throughput, and unfinished projects.
So what do you need to do? First think about utilizing Agile with this person. Serious, tried and true pair programming and some other things. This spreads the "over acheiver" around to utilize what they know but also allows others to get up to that speed also.
Another thing, YOU have to manage better. If he/she falls behind on tasks then YOU are responsible for identifying this and controlling the flow of tasks and or "user stories".
All in all, this sounds like a case of waterfall or some other process getting in the way of an individual that could make much more of an impact toward the progress of a company/project/effort. Make sure to remove the barriers and let that person play a larger role.
Psychologically, profitably, morally, and ethically this is the appropriate thing to do. Hope that at least plants some ideas.