It also depends on which netcat you use. I usually use ncat (which comes with nmap) with the following invocations, and that never gave me any encoding/EOF/CRLF trouble:
# on sender
ncat --send-only --listen 12345 < file.zip
# then, on receiver
ncat --recv-only 1.2.3.4 12345 > file.zip
Netcat has plenty of (confusing) options, but there's usually a solution.