How do you rig a character made out of linked parts? I've modeled a character that I want to rig. Various parts of the character are mirrored (e.g. left and right arms), so I want to at least partially link them to make iterating on the model easier (that is, to make sure that modifying one modifies the other: vertex data, modifiers, materials, etc).

If I try using instancing to do the linking (that is, grouping one arm together, and making the other arm an instance of that group), any pose change applies to both arms.

If I try sharing the mesh datablock only, the problem remains the same, as the vertex groups (which define which bones have influence on the mesh) are shared.

Is there no way to avoid duplicating the two similar objects?
You should be able to use the mirror modifier here.

It has an option for mirroring vertex weights.

It uses the standard mirroring name convention (like bones, so it works fine with rigging). Basically if a vertex has weight 0.6 in group.L, its mirrored copy will instead have a weight of 0.6 in group.R. By creating empty groups for the mirrored side it is quite easy to rig one side and have it cleanly mirrored.