Having spent all day long fighting with this and trying to figure out the problem, I finally have half of the answer: the hosting site (WPengine) has a script that runs, killing any process that lasts more than 1 minute. So that is why small files are fine and large ones stall.
I have figured out a way around this (for now) by dropping the files in a different (non-WPDM) folder and using a URL. It is slow, but it works.
However, this leads me to the next question: If I am able to convince the customer to use either dropbox or google drive, will I have a similar issue?