When you pipe into g{un}zip, it expects the compressed data from stdin, not the filename, so it complains that what it sees on stdin is not in gzip format.
You should try using find with the exec option instead. Something like this:
Code:
find path/to/search -type f -iname '*gz' -exec gunzip {} +
You can limit the depth of the search and file names as required. You may also need to escape the brackets and + (or ; ) depending on invocation context.