They have a non essential copy of the directory at the end for spoed; tools exist to rebuild it if it is corrupted from the entries inside the file. But it is usually very small (the only real life exception I met is the hvsc archive where the directory size is very significant - so they zip it again)
Similar effect can be achieved with gzip --rsyncable, which IIRC resets the dictionary based on a rolling sum.