Ohh sorry, i missed the part with the download. The only thing i have in mind, use a download servlet instead. With such a servlet you can generate a download link, which leads to this servlet, which creates the .pdf or whatever can be downloaded at this site.
But it will be only a workaround, no clue how to solve your problem directly
Faced the same issue with a download.
Then I realized that the download didn't need to be an ajax call at all, so I simply replaced the <a4j:commandButton> with the regular JSF <h:commandButton>. Of course, I lost the "loading" display but I get the loading of the browser instead, which is just fine in my case.
In fact, I don't see any reason why a download should be modal, so the regular HTTP request should cover most cases.
You can add the "loading" display by manually make the status visible per Javascript.
Correct, the issue is to hide it on download completion. It seems there is no (simple) solution for that.