If the Net::FTP module handles the ASCII transfer mode, it should be able to request it of the server for those files which need it. Then one side strips out carriage returns in transit. That's what it's for. BINARY mode keeps both sides' bytes intact, which sounds like what's happening for you.
Cygwin has a setting for whether or not the programs will work with \x0D\x0A or \x0A as the default value for \n. I don't know whether you've looked into that, or if it's something you can change in your circumstances.
--
[ e d @ h a l l e y . c c ]