We have used the zodb-cache-size-bytes option for a while, but noticed that Plone sites using this would have random slowness in responding to requests when they started hitting the memory limit. So we removed it again, set for monitoring zope process memory usage instead and rotate restarting the zope processes after a few days/week depending on the memory usage trend.
Also see this thread on zodb-dev from 10 years ago. [ZODB-Dev] Understanding the ZODB cache-size option
This is partly low level object database technology, stable from 10-15 years ago. Not many devs/admins (still) know exactly what happens in the full stack . And there is a lot of YMMV depending on what you build on top and which objects are in your database. As Hanno wrote 10 years ago, it might be a case of black art.
Maybe zodb-cache-size-bytes has been fixed, improved or optimised, we're ZODB5 and Python 3 now. But unless somebody with detailed knowledge who worked on this layers during the last 5-6 years can give some more info, Hanno's post has for me been a red flag to avoid zodb-cache-size-bytes.