De los javadocs de OrderColumn:"La columna de orden debe ser de tipo integral. El proveedor de persistencia mantiene un ordenamiento contiguo (no disperso) de los valores de la columna de orden al actualizar la asociación o colección de elementos. El valor de la columna de orden para el primer elemento es 0".
Entonces, la expectativa es que los valores de OrderColumn comiencen desde 0 y sean valores continuos. Entonces, cuando los valores no son continuos, Hibernate agrega elementos nulos a su lista de Java.
Creo que este comportamiento de OrderColumn es similar al comportamiento de índice de lista en el mapeo xml de hibernación.