This designer-implementor conflict I think is the biggest hurdle with being both the designer and developer.
If you're thinking about the implementation too much while designing then it can compromise the design because you can tend to subconsciously shy away from things that may instinctively 'feel' hard.
So for me this is where the biggest strength of a separate designer can be if they're just focusing on making the design truthful to itself which in turn can challenge the programmer to push that bit more.