The underlying problem is that you don't need that smart of an engineer and he's being underutilised.
You should move him to another team where he can do meaningful work without having to come up with complications of the existing codebase.
You can also put more on his plate in the form of people work / leadership; it's a different skill to master and if you constrain the time he has available to do work, he'll be forced to keep it simple.
I definitely had an "overcomplicating" phase (whether to play with something new or just because the job is boring). Right now I just constrain my time for tasks, by doing a lot of different things and I need to keep things as simple as possible.
I still write a few 2000 characters throwaway one-liners every once and then when I get something done quickly, though.