To affect the material of just one renderer even if the material is shared, you can use Unity's MaterialPropertyBlock API.
Sample usage can be found here:
https://github.com/pharan/spine-unity-docs/blob/master/Rendering.md#setting-material-properties-per-instance
MaterialPropertyBlock mpb = new MaterialPropertyBlock();
mpb.SetColor("_FillColor", Color.red); // "_FillColor" is a named property on a hypothetical shader.
GetComponent<MeshRenderer>().SetPropertyBlock(mpb);
You can cache the MaterialPropertyBlock object reference and material property name ("_FillColor") hash on your class for performance.
But you always need to call SetPropertyBlock whenever you want to update the material properties.
This is not specific to Spine-Unity. You do this for any renderer-specific Material property modification in Unity.