It's called when you initialize-output-translations, which happens (via ensure-output-translations) the first time that an output translation is computed by apply-output-translations.
Strange, I didn't find direct calls to compute-user-cache in the code. Maybe it is called via hooks...
I recommend you *do not* hack *user-cache*, but instead give a parameter to initialize-output-translations.
Thanks! Unfortunatly, I'm not sure I have a time for more studying and experiments. There is also a design work: how not to break other things, how to ensure default cache is disabled (documentation does not show this option), how to deal with environment variables on Windows, what would happen if some library would call configuration API after me, etc. Configuration algorithm is rather complicated and it definetely requires essential time investment to learn and experiment. So I'll keep with my solution until something would break :) Sorry for that...