Probably you've already thought about that, and i've never ran into the same problem, but being that in S3 and as you said that you can download those files separately, is your app going into an out of memory during that action? Or could those files being so huge that the connection is rejected in the middle of the process?
In the past, i've already had a problem when consuming data from S3, which was i couldn't retrieve more that 50K rows, and the process was being stoped in that moment, and i'm not sure if you could face the same issue in this case, or something similar to that.
I know that it's not the help that you wanted, but if you can't find a solution, try to see with the team responsible for the S3 to try to understand the limitations that you have and see if they match with what you're trying to do,
Another workaround could be, in case you have for example 5 files, trying to do it in different set to detect if it's only one giving you problems, or another idea could be to create a process to run it in batches and store it in your app and then treat it in mendix with the connection to S3 already closed.
Hope it helps,