I guess ReadToEnd requires length to properly function. GZipStream is a forward-only stream implementation so length won't necessarily be known (like if you're using a NetworkStream).
Can you do without ReadToEnd?
Can you do without ReadToEnd?