I have seen a SoapExtension that used NZipLib to do compression/decompression on both client and server sides. I didn't write it so I can't pass it out freely. I will have to leave that up to the author.
SoapExtensions are definitely the way to go in this case... You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.