Tendrías que utilizar header() para eviarle al navegador las cabeceras que le indiquen que se trata de una descarga.
Por otro lado, no necesitas crear el archivo (es decir darle un nombre y guardarlo en el servidor) y luego borrarlo, basta con que le envies al navegador el contenido de dicho archivo:
Muy simple seria así:
Código PHP:
<?
$tu_archivo = genera_zip(); //Generas el archivo
header('Content-Disposition: attachment; filename="nombre_archivo"');
echo $tu_archivo;
?>
Podrías agregar otras cabeceras para indicar el tipo mime y algunas otras cosas. Podrias revisar la documentación de la función
header() para más información.
Saludos.