No, it's not completely reliable. The uncompressed size in a zip file can certainly be altered by a malicious source. You should use the uncompressed size to limit the memory used, and if the decompression goes past that, simply stop and reject the zip file. You should never rely on the input to avoid exceptions.
It is possible to decode a compressed entry and determine its uncompressed size without actually generating the uncompressed output. However there's not much point to that if you're going to decompress anyway. Decoding takes almost as long as decompressing. Just start decompressing and stop when you hit the claimed uncompressed size.