At least part the problem is that the fopen/fread etc API is dangerous unless well implemented at the lowest level. Intermixed uses of fpos and fread can easily mangle your data unless the lower level code really carefully tracks things. Our API providing fpos at the image level is decidedly dangerous, adding a second layer of possible problems.
/tim {insert witticism here}