The manual also has a line:
windowBits can also be greater than 15 for optional gzip decoding. Add 32 to windowBits to enable zlib and gzip decoding with automatic header detection, or add 16 to decode only the gzip format (the zlib format will return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a CRC-32 instead of an Adler-32.
Please correct me if I have drawn any wrong conclusions from this. :)
Missed that part, thanks. So this boils down to a discrepancy between zlib and the internal version used with FT_CONFIG_OPTION_USE_ZLIB which doesn't have this feature.
Perhaps the internal zlib can just mask out those higher bits internally to work around the problem. At least here if I comment out the '|32' things get back to normal, at least for my use case (WOFF fonts).