This should be possible using the "resume" capability of HTTP/FTP, and possibly Tranche as well. I don't see why this wouldn't work even on gzipped files. It'd be bloody slow, but it should work in theory. So it seems like an ifstream derived from random_access_compressed_ifstream would be the place to do it? Getting socket support into pwiz will add more dependencies; any ideas on which library would be best for this?
Incidentally, we can't read the vendor formats this way unless the vendor APIs explicitly provide this support, which I rather doubt.