The short answer is that Cygwin can never work as well as WSL because it's layered on top of Windows and has to map. So the API is inherently only as good as what Windows presents to the user.
Historically that was true, but no longer. Since 2000, more and more direct calls to the NT Executive have appeared in the cygwin1.dll source: there are about a thousand of them now, invoking about 90 different Executive APIs. Such features as flock(), mmap(), and reading from block devices cannot be done in Win32 and use the Executive directly. Unfortunately, it also makes Cygwin a bit more brittle to Microsoft changes, as the NT Executive API is permanently unstable. So far, Corinna and friends are keeping up nicely.
When I was as DEC I was involved with the whole story ... so let me pull much of the rest of the answer from my Quora answer to is 'Windows POSIX compliant'[1].
Thanks for the history!
BTW, when you say "Win32S" you mean "Win32". Win32S was a long-obsolete package to let 32-bit Windows apps run on 16-bit Windows if they didn't try to do too much.
(Which reminds me that in my list of subsystems running on the NT Executive, I forgot to mention WoW64, which provides a 32-bit WIn32 environment on the 64-bit Windows kernel, and is used to keep 32-bit Windows apps running.)
Anyway, my own experience is IF you have to use Windows 10, WSL pretty much 'just works.'
I agree. However, I have spent much of my career on corporate Windows boxen, which are often locked down to prevent you from installing things, including WSL. Because Cygwin bypasses the regular Windows install system, it flies under the radar.