This is a requirement of Windows: since the .dll file contains the code that will be run, it needs to set the executable bit.
Remove the permission to execute the file, and Windows will not allow any of the code to execute inside it, even if the process executing the execution is separate.
Side note: this is a common misconception that there is no bit + x for Windows. This is technically true; Windows does not use POSIX rwx permissions, although Cygwin is trying to provide an interface similar to them. However, Windows uses access control lists (ACLs) for permissions, and they have the concept of "execute permissions", which means that Cygwin matches its + x bit.
There's a long discussion on the Cygwin mailing list about this if you want sources / further reading.
source share