The bpy.utils.user_resource function takes a resource parameter, which can be chosen from [‘DATAFILES’, ‘CONFIG’, ‘SCRIPTS’, ‘AUTOSAVE’]. It would be great to have a 'CACHE' choice here too. Use cases are local caches of Blender Cloud content, or BVH/simulation caches.
On Linux and similar platforms, a possible location to return would be $HOME/.cache/blender. On Windows this might be %APPDATA%\Roaming\Blender for a regular install, and something relative to Blender's path on portable "installs". I don't know enough about MacOS to suggest something there.