The solution depends on the reason for the download failure. You may not always see errors in the mojoPortal log, the windows event viewer may show some things that don't get logged.
Are you seeing application start and end events logged during failed downloads? If so then it still could be a memory problem because the application pool will get recycled when memory limit is reached and if that happens during a download it will fail.
It could also be a request timeout, though that kind of error is more likely to be in the mojoportal log. By default the request timeoput would be 110 seconds but you could make it larger by putting this in user.config:
<add key="DownloadScriptTimeout" value="200"/>
Because shared files is designed to protect files by role it is not like a normal download. files are stored on disk using a .config extension so they cannot be requested directly by url. The user's permissions are checked and if allowed code opens a file stream to the file and writes that to the response stream which can mean the server needs to load the file into memory so memory limits can become a factor.
If the files do not really need to be protected it would be better to not use Shared Files and just link directly to files by url, ie upload files using the file manager or using the link browser toolbar item in the editor of html content instead.
Hope that helps,