yo uso una libreria DLL gratuita (es free open-source ) disponible en 1.1 y 2.0:
ICSharpCode.SharpZipLib.dll y te lo puedes bajar de:
http://sharpdevelop.net/OpenSource/SharpZipLib/
Es muy fácil de usar para hacer ZIP's. En la web viene hasta con ejemplos y ayuda.
Yo tengo una seleccion con checkbox en una columna de datagrid y el usuario elige los ficheros que quiera, los comprime en zip y los descarga al usuario.
Lo único que necesitas es una carpeta temporal para hacer el zip.