They all have something wrong with them. Grep is broken(so old there is no recursive option, or there is one but doesnt work) at least in MSYS, MINGW and Cygwin.
I use Cygwin as my main interface on Windows, while my work machine is Linux. I've been using Linux since 96. There is very little functional difference between terminal-based userland on Cygwin and Linux, with the sole exception of speed; Cygwin syscalls are slow, and forking is to be avoided in shell scripts where possible.
Cygwin is a better Unix than OOTB OSX owing to not being stuck on GPL 2.
grep is working fine in msys/mingw, and has been for many years. I do not remember if I have ever seen it not having the recursive option there. It has been working for my in Cygwin, too. As well as many other utilities ported from unix to Windows.
I use Cygwin as my main interface on Windows, while my work machine is Linux. I've been using Linux since 96. There is very little functional difference between terminal-based userland on Cygwin and Linux, with the sole exception of speed; Cygwin syscalls are slow, and forking is to be avoided in shell scripts where possible.
Cygwin is a better Unix than OOTB OSX owing to not being stuck on GPL 2.