Yes, the parent has a kinematic rigidbody attached - if I delete the rigidbody component OnMouseOver works fine.
This seems like a bug in Unity - it’s not behaviour that seems reasonable or logical.
I need to use a rigidbody because it’s a moving elevator - with a control panel that moves with it.
To get round this I had to add a check to see if the control panel is parented, then cache the parent transform before unparenting it. Then, once the switch has been activated by OnMouseOver, I reparent the control panel before the elevator moves. Finally, I unparent when it reaches it’s destination.