to use -n is an assumption of text, why else would you break on a carrage return, line feed or both if it wasn't text? If you're expecting raw data, you'd use -f
This also has several benefits, which I have utilized such as parsing html or json or whatever from a raw socket, since the event fires even if you specify -n if the recieve queue is completely full. Such an instance would be say store this "chunk" in a hash table, and re-read from the socket retrieve "chunk" from the hash table, append "new chunk", etc.. until you finally reach your newline break, which is detectable having the trailing 0's.
Changing this would break things where this behavior is expected.