Ciao,
io ti suggerisco questa libreria: http://www.icsharpcode.net/OpenSource/SharpZipLib/
che ti fa fare lo zip di una dir con un codice di questo tipo:
FastZip zip = new FastZip();
zip.CreateEmptyDirectories = true;
zip.CreateZip("c:\\prova.zip", "c:\\tmp", true, "");
ovviamente funziona analoga anche per i file, etc... e se vuoi avere maggiore controllo di quello che deve fare la libria mette a disposizione altre classi che te lo permettono di fare.
Io direi che con questa liberia sei veramente a cavallo 
Ciao.
Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo