I think the problem is with IsComplete. I think you're assessment of the disposing is correct. You have to manage your own streams if you give them to SharpCompress as well as use using blocks liberally.
IsComplete doesn't force the parsing of the archive fully like other operations. This seems like a bug and I think I've now fixed it:
https://sharpcompress.codeplex.com/SourceControl/changeset/2f8ce7087d9b
IsComplete doesn't force the parsing of the archive fully like other operations. This seems like a bug and I think I've now fixed it:
https://sharpcompress.codeplex.com/SourceControl/changeset/2f8ce7087d9b