I am using both hands with the hand tracking and controllers(but not at the same time) in my app by setting OVRCamera's Hand Tracking Support to "Controllers and Hands."
What I want is to detect switch between the hand tracking and controllers, but when I change from hands to controllers at runtime, it seems that OVRHand's IsTracked and HandConfidence holds last value and never update it, so often either of them or both still holds the value of active hands(IsTracked = true, and HandConfidence = TrackingConfidence.High) and they can not be used to detect the change. You can check that by going back from your app to Oculus Home with the hand gesture and then making controllers on in Home, and going back to the app. (But this problem also happens when enabling controllers in your app by touching controllers, though sometimes you can see IsTracked = false and HandConfidence is Low because when you touch your controllers, their value may change.)
By checking the value of OVRHand's SkinnedMeshRenderer.enabled, it can be detected. But I think IsTracked should at least be false when the hand tracking is not in use.