The main advantage to me is that implementers of nextValueHashed wouldn't have to be concerned anymore about whether they can fill the bytes or are just allowed to change the pointers, since they would know for a fact they are always operating on a private BytesRef instance, they are allowed to do whatever they want to.