I think a far more useful way to divide up software engineers is by how good they are at gathering requirements/understanding the problem they have been tasked with.
That said, and this might be crazy... but sometimes it is nice to have people good at different things on your team :)
With a good lead you can have a person with overengineering leanings on your team and have it be a strength as long as you balance that with other ways of thinking.