When I'm designing I consciously ignore any sense of "this is difficult/impossible to implement" and when I'm working with a designer I tell them to ignore development constraints in the design process. Once we have a fina design and it is impossible, sure you can reevaluate, but don't let that influence the initial designs IMO.
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.