Windows is a total red herring, since no-one's saying here that it's dead easy to run a full generic Linux stack (Wayland/X11, GStreamer, etc etc) on Windows. Which is good, because they'd be wrong if they did.
The missing pieces of Bionic aren't fundamentally impossible to add, but it's a very real barrier to using Bionic today. Fixing pthreads is really quite difficult, and the binary-only GLES/EGL drivers you tend to get rely on pthreads being the way they are today (i.e. crippled by design). Not to mention the matter of various pieces of missing pthread functionality.
Crucially though, the big problem is that upstream has no interest whatsoever in fixing either pthreads or the lack of other functionality such as timerfd, and has repeatedly stated this.
Some of the guys I work with at Collabora did a lot of work on integrating a generic Linux stack into an Android system; you can see the results at http://cgit.collabora.com/git/android/platform/external. You can see all the work that goes into every single part of the stack to make it even build on Bionic, followed by all the bending over backwards to integrate them into Android's build system, which is much more difficult.
Even then, all that's assuming that you've got a full AOSP port to work with. If all you have is the NDK, then your life is a lot more difficult, especially if you want to do things like run D-Bus services with cross-process messaging.