The original question might be resolved: it appears that the *gz file I was using for testing is somehow corrupt (gunzip fails on it, reporting "unexpected end of file").
I still wonder whether there are any benefits to using the IO::Uncompress::Gunzip as opposed to a pipe. Generally, are there any caveats I should be aware of when dealing with large *gz files in Perl?.. Feel free to contribute bits of wisdom, but the original question is as of now moot.