It is impossible to turn off on-the-fly caching without either major architecture change to Zenphoto or implementing some manner of IPC. The on-the-fly caching is considered a feature of Zenphoto and it is unlikely that this will change in the near future.
Performance is always a trade-off between memory, CPU, and disk. In an environment as you have described, memory and CPU are the first resources to be exhausted and the parallelism exacerbates the issue. It's typically not a bad thing to max out the RAM and CPU as long as it isn't causing problems.
http://www.imagemagick.org/script/resources.php#environment
In a threaded `httpd` environment, it might be possible to use `MAGICK_THREAD_LIMIT` to enforce the max number of concurrent threads. In a standard `httpd` environment (that spawns processes, not threads), limiting threads alone will not work. A better solution might be to use `MAGICK_THROTTLE`. Doing this, you can be sure that any given caching process will, at convenient points in the processing, yield to other processes that are vying for CPU time.
As for the precaching mechanism, the best solution would be to have the user select how many images are precached at a time (with a sane default). In your case, you could choose to have one image cached at a time. So, at any given time, you would have one image being cached plus however many are currently being cached on-the-fly. Once all images are cached, it sounds as though the server can handle concurrent requests.
To me, this is really the issue here: the precaching mechanism can be too resource intensive for some servers. As last I recall, precaching is considered unsupported, so it's really up to the devs what to do from here.
Given that fact, and the fact from your ticket that you are using uncompressed bitmaps, I think the most prudent advice at the moment would be to use processed images on your site instead. That will help alleviate resource issues and you can provide the uncompressed version of the images outside of Zenphoto.