Seems this would not be a deterministic thing, or is there a way to do this reliably?
Reliable: unzip both, diff.
I have no idea if that answer's good enough for your use, but it works.
If you're using gzip, you can do something like this:
# diff <(zcat file1.gz) <(zcat file2.gz)
In general, you cannot avoid decompressing and then comparing. Different compressors will result in different DEFLATEd byte streams, which when INFLATEd result in the same original text. You cannot simply compare the DEFLATEd data, one to another. That will FAIL in some cases.
But in a ZIP scenario, there is a CRC32 calculated and stored for each entry. So if you want to check files, you can simply compare the stored CRC32 associated to each DEFLATEd stream, with the caveats on the uniqueness properties of the CRC32 hash. It may fit your needs to compare the FileName and the CRC.
You would need a ZIP library that reads zip files and exposes those things as properties on the "ZipEntry" object. DotNetZip will do that for .NET apps.