Contrary to zlib module, the bz2 API doesn't provide anything to read a certain amount of decompressed data. And the bz2 module may not be the only decompressor that is so badly written.
The size of attachment:ticket:116:1GB.bz2 is only 785 bytes but it contains 1GB of data (only 0x00). As for efficiency reasons, Hachoir gives the decompressor chunks of a few kB, python must handle 1GB of data at a certain moment, and unless you have enough memory, you'll get, for example, a MemoryError?, an OOM, etc.
I tested the bz2 module by giving it 1 byte at a time and it returns chunks or 45899235 bytes...
source of the bz2 module: http://svn.python.org/view/python/trunk/Lib/encodings/bz2_codec.py