@your-common-sense Wouldn't type safety be one reason?
If I had only a set() method, I can't have explicit enforcement for all 3 types. I'd have to use mixed or object|callable.
Having separate methods allows me to be more explicit in how each service is stored.