O navegador pode enviar um cabeçalho "Accept Encoding", que diz que pode aceitar diferentes tipos de codificação. Normalmente, isso é "gzip, deflate". (O Google Chrome possui um formato esquisito chamado "sdch", que você pode simplesmente ignorar.) Então, se você obtiver esse cabeçalho no navegador, poderá, se desejar, enviar seu conteúdo novamente compactado usando o formato gzip ou deflate. Quando você faz isso, é claro que precisa informar ao navegador o que fez, para adicionar o cabeçalho "Content Encoding" aos itens enviados.
Os formatos gzip e deflate são definidos no RFC (documentos de padrões da Internet). Não há opção "zip", embora possa haver uma opção "bzip2" em alguns navegadores.
Agora, seu problema é codificar suas coisas nesse formato e enviá-las de volta. Se você estiver usando o Apache, existem maneiras de configurá-lo para fazer isso automaticamente (mod_deflate etc.). Se você estiver enviando imagens, observe que a maioria dos formatos de imagem, como JPEG, PNG, GIF etc., já está compactada, para que você não obtenha nenhum benefício em compactá-las. Basicamente, funciona apenas para HTML, CSS, texto sem formatação ou JavaScript.
Você precisa ter cuidado ao usar a codificação "deflate", já que o Internet Explorer possui um bug de longa data, que não o entende muito bem. Acredito que coisas sofisticadas como o Google App Engine determinarão automaticamente qual compressão usar e a aplicarão a você.