Weisst du was,
es geht wunderbar mit einem
print "Location: http://url/zipfile.zip\n\n";
Also du generierst den Zip File, dann printest du den Location header und schon kommt der Download. Der Nachteil ist nur, dass du nicht die Möglichkeit hast die Zip Datei noch zu löschen, aber darum kann sich ein anderes Script periodisch kümmern.
Gruß,
Cruz