In your collecting of information from customers affected have you determined whether any/many of these are downloading via dialup connections?
A 1MB file on dialup can be a lengthy process, but shouldn't kill things.

If you have a lot of dialup users (or otherwise using slow connections), then you might be best advised to use Download-By-Redirect, and turn off Download-by-Streaming.
The streaming method uses PHP processes, and if your server has a short PHP max-execution-time, things will be cut short.

What is the max_execution_time setting in Admin->Tools->Server Info ?
What is your setting in Admin->Configuration->My Store->Admin Set max_execution_time for processes ?