Are you sure there’s no script anywhere accessing the renderer.material? Merely reading from it creates a copy of the material that will stay around in memory until you either load a non-additive scene, call Resources.UnloadUnusedResources(), or manually destroy the material yourself.
The material has “instance” on its name, which indicates it was duplicated. Not sure how that would happen is there are no references to the material property, but seems like the workaround would be destroying the material when you destroy the monster (maybe in the OnDestroy function).