My skeletonRenderer is heavily modified so I'm not so sure about line numbers...
But if you are referring to the place where the sharedMaterials are overwritten, then it is possible.
If you had a shader property "someColor" for example, then to change it for lots of different skeletons you could just do the following; (this is bad though, don't actually do it like this, cache propertyBlocks, don't create a new one each frame)
// Set materials.
if (submeshMaterials.Count == sharedMaterials.Length)
submeshMaterials.CopyTo(sharedMaterials);
else
sharedMaterials = submeshMaterials.ToArray();
GetComponent<Renderer>().sharedMaterials = sharedMaterials;
// New stuff
---
MaterialPropertyBlock block = new MaterialPropertyBlock();
GetComponent<Renderer>().GetPropertyBlock(block);
block.SetColor("_someColor", someColor);
GetComponent<Renderer>().SetPropertyBlock(block);
with someColor being, for example, a public serialized property I just added to skeletonRenderer to demonstrate. You can see two crap test skeletons below that have the same material, but different colors as specified per my new skeletonRenderer property someColor...

Anyway, it's perhaps a moot point since they didn't seem to batch on my end. 🙁 Will keep digging for a bettter solution, but I think it should be totally doable without multiple material instances.