I wrote a proxy module for AOLserver that used ns_writefp, and I would get these io errors. But what it boiled down to was the user would hang up on the connection, usually an image file would get cut short in the process. I'm guessing that ns_writefp doesn't check for the other end closing the connection. Does ns_returnfile do this type of check?
So the question is, are users giving up on a download? How are they getting a partial file without the browser reporting the problem?