I'm not sure where TGZipDecompressionStream comes from? Not in my version of ZStream and perhaps that's my problem. Anyway, for someone else blocked where I am, this code removes the header from all the gz sources I've run into and means that the bytes can be read by TdecompressionStream:
function readZLibHeader(stream : TStream) : TBytes;
var
b : TBytes;
p : int64;
i : integer;
begin
b := StreamToBytes(stream);
if (length(b) < 10) or (b[0] <> $1F) or (b[1] <> $8B) then
result := b
else
begin
i := 10;
if ((b[3] and $08) > 0) then
begin
repeat
inc(i);
until (i = length(b)) or (b[i] = 0);
inc(i);
end;
if i >= length(b) then
result := b
else
result := copy(b, i, length(b)-i-8);
end;
end;