First, let me say that cygwin has its place. It's great when you have a lot of utilities that are UNIX-based and you need to introduce Windows. For example, my company uses a reservation system for machines. That reservation system is a UNIX script (I'm oversimplifying slightly), and cygwin lets us use the same reservation system for our Windows machines.
Cygwin is a crutch.
Because we have cygwin...
- we can mount drives through cygwin instead of standard Windows methods
- we can copy files using cygwin rather than through drag-and-drop or Windows copy commands
- we don't have to learn Windows
That crutch has made us weak, in particular because of the last part. Just because you can get a UNIX-like environment on Windows doesn't mean you should always use that environment. Just because you have a crutch doesn't mean you should always use it. Save the crutch for when your leg is broken and you have no other choice.
End anti-cygwin tirade. Promise!
The problem really isn't cygwin. The problem is choosing to use that instead of the native (Windows) OS wherever possible. The problem is that when you use cygwin you're not really doing what your users do on Windows - you're using wacky alternate methods. So you copied a file with cygwin. That's different than if you copy a file with Windows Explorer, and one day you're going to miss a bug because of that.
If you really do have to put something powerful and rather odd on a system (aka a crutch), that's fine. Do it. Just recognize that you're forcing something into a place it doesn't quite fit, and don't use it for anything but that one purpose. Wherever possible, use the native functionality instead. Is it more work? You betcha. Is it better in the long run? Absolutely.
It may be a bit unfamiliar, but you'll learn it, and in the end you'll be much better for having both.