How can I bake the physics cache of linked objects?
Yes this can be done.

However the solution is admittedly awkward, and this is an areas Blender could be improved.

Initial Bake


Make sure the point cache has External and Use Lib Path option enabled,this way each library object can have its own cache when instanced in other files.
Now for the trick In the file that links this data in.


In the Properties Space, Select the object category.
Pin the object (Pin icon, top left corner of space).
Now, you can use the object ID selector to select a new object, one that is in the library and need the simulation to be baked.
Now navigate to he buttons and run the bake operation.



Note, This is really a hidden feature which we are not proud of!

Setting Parameters

To just execute the bake locally often isn't enough, you probably want to change the frame range and may even want to tweak physics settings based on the environment.

In this case the only option is to use a Python script which overrides these settings on load, give it a name that won't conflict with other Python modules and enable Registered in the text header so it runs on load.

Heres an example: my_init.py

import bpy
scene = bpy.context.scene
obj = bpy.data.groups["MyLinkedCharacter"].objects["HairDo"]
obj.particle_systems["ParticleSystem"].point_cache.frame_start = scene.frame_start
obj.particle_systems["ParticleSystem"].point_cache.frame_end = scene.frame_end


This script can be run manually at any time to update the settings.



Note

Rather then having single text-blocks per-file, the open-movie Sintel used a single Python script that loaded for all files, called finals_config.py. I'd recommend using a single script to manage this otherwise you can't easily see whats happening without opening up every blend file although this script become messy over the course of the project so its not a great starting point, more a reference as to what can be done.