> 完了したあとダウンロードされないことがあるとサーバーにごみが残り続けるって問題があって…
cronでも使って定期的に後片付けすればいいよ

> Chromeではfetchのreadablestreamをつかってダウンロード進捗が動いたのでサーバーからはflushできてるみたいなので

ZIPを作成するまでの待ち時間が問題なんじゃなかったのか?

fetchのreadablestreamはJavaScriptでのダウンロード中に画面更新ができるという話で、
ZIP作成までの待ち時間は別の話だし、そもそもJavaScriptでダウンロードするのではなく
ブラウザにダウンロードさせれば画面更新は行えるだろう?

本当にやりたいことは何?