The InputSystem.onDeviceChange event behavior between Editor Play Mode and built executables is not consistent due to the way Input System operates. The onDeviceChange event is indeed invoked in both, but only on built executables, the event isn't invoked after script initialization (ie Awake method). From XR perspective, this is working as intended. If the behavior would change, it would require work from Input team instead.