material Modifying material will change the material for this object only. If the material is used by any other renderers, this will clone the shared material and start using it from now on.
sharedMaterial Modifying sharedMaterial will change the appearance of all objects using this material, and change material settings that are stored in the project too.
So if you ever access the material property then you will get the (Instance) appear next to the name, if you want the changes to apply to all objects then only use sharedMaterial.
If you want to make changes to some of the objects but keep the same material then look at MaterialPropertyBlock as an alternative.
“Do materials named ‘Material(Clone)’ and ‘Material(Instance)’ have internal differences, or is it simply due to differences in how they are created (using ‘material_set’ and ‘Material.Instantiate’)?”