I don’t know exactly for arm64, but in general allocatable registers (those used by the register allocator) should be in sequential order so that can be interpreted as array indices. And the role for each register is also a function of whether it is caller- or callee- save in the standard C calling convention in order to work well in OCaml/C function calls. These factors often lead to numberings which may not be the most natural ones.
Cheers,
Nicolas