Depende de lo que quieras. Cygwin busca emular todo el sistema unix/linux en Windows con la mayor precisión posible, incluyendo la estructura de directorios, funciones, librerías, etc.
Mingw/Msys es más ligero y busca utilizar funciones, librerías y convenciones nativas de Windows siempre que sea posible.
Así que, en cierto modo, Cygwin es más fácil y natural de usar para alguien más familiarizado con el entorno Unix, mientras que Mingw/Msys funcionará de forma más natural para alguien más familiarizado con Windows.
Nota: tanto Cygwin como Mingw son subsistemas de desarrollo completos, no sólo el shell bash. Fueron desarrollados con el propósito de escribir y portar programas tipo unix a Windows.
También existe el proyecto gnuwin32 que proporciona muchas utilidades gnu para windows (incluyendo un shell). También hay varios puertos de bash para Windows (use google), algunos de los cuales son ejecutables de un solo archivo y no dependen de ninguna biblioteca externa, pero tienen una funcionalidad más limitada.
El mejor shell es el que usted se sienta más cómodo usando.