I'm typing on a phone in a dog park. Expect brevity and typos.
Why do think one or another behavior is incorrect? slot-value is required only to return the correct value (etc.) if all the metaobjects are of classes "specified" in the standard. The MOP prohibits you from changing or extending MOP gfs when all the discriminating args are of specified classes. If you use customized class or slot-definition metaclasses then slot-value needs to obey some or all of the full slot-value-using-class protocol, but otherwise your code cannot legally change what s-v does or returns.
This is spelled out somewhere in the MOP in a section on restrictions on user code or something like that.