Seems this would not be a deterministic thing, or is there a way to do this reliably?
Actually gzip and bzip2 both come with dedicated tools for doing that.
With gzip:
$ zdiff file1.gz file2.gz
With bzip2:
$ bzdiff file1.bz2 file2.bz2
But keep in mind that for very large files, you might run into memory issues (I originally came here to find out about how to solve them, so I don't have the answer yet).