When Silverlight downloads the assemblies in your app can it be made to download them as zipped files and then uncompress them before running? This would speed up the download time for a large application.
Why don't you enable GZIP compression on your server, this should work for silverlight aswell.
afaik silverlight 2 xap files are already zip compressed. So unless I misunderstood you there should not be much optimization through compression. (Edit: See other posts and comments on how to optimize through re-compression. Thanks!)
More Info: Structure of the xap file
What you could do is dynamically load additional assemblies after a small "bootstrap" version of your program distracts the user long enough to load the rest. ;) Dynamically Loading an Assembly
The Silverlight 2 .xap file format is already compressed, if you rename it to .zip you'll be able to open it in Windows Explorer for example.
The default compression is not as optimal as it can be however and so there are a few free utilities you can use to reduce the filesize of the .xap often dramatically.
Here are the best links:
http://web-snippets.blogspot.com/2008/11/another-one-on-repacking-xaps-to-reduce.html