I'm not sure about this. According to MSDN, decoders are supposed to do the decoding incrementally in CopyPixels, assuming the user reads rows from the top. In theory, the other decoders that do all the work in Initialize should be changed to do it this way.
Can you explain why this change fixes the problem you observed? Is libjpeg broken? Are we using the API incorrectly? Could there be a memory bug somewhere else causing strange behavior?