After doing some research in Google, I came across this:http://www.sigsiu.net/forum/download-plugin/zip-file-corrupted-after-download-%28solved%29/
I realize this is about Joomla but since Wordpress is also a CMS, I thought it might apply since I found this in your file-download-access.inc.php:
Send the file to the browser in chunks ( in support of larger files ).
Be sure to turn off output compression, as it DOES get in the way.
set_time_limit (0); /* Unlimited. */ ini_set ("zlib.output_compression", 0);
header ("Accept-Ranges: none");
header ("Content-Encoding: none");
header ("Content-Type: " . $mimetype);
header ("Content-Length: " . $length);
if (!$inline) /* If not inline, we default to serving the file as an attachment. */
header ('Content-Disposition: attachment; filename="' . $basename . '"');
The reason I think something might be going on is my larger zip files are corrupted but when I download some of the smaller files, they are not and they all are in the s2member-files folder.
Then again, what I know about writing and reading PHP you could put on the head of a pin