.tar itself gives you enough information to seek forward past each file, though every file must be visited.
.gz does not give you enough information to randomly seek within the big compressed .gz file, so you cannot skip past files within a .tar archive.
But if you load a .gz file and consume the entire stream, but keep periodic checkpoints of your past sliding window (about 64KB) every 1MB or so, you can get random access with 1MB granularity. You still had to consume the entire stream to build the lookup though.