Cuando trabajas con objetos primitivos no puedes establecerlo como nulo:
int arreglo[] = new int[10];
Cuando creas un array nativo de int todos los valores por defecto son 0, en cambio en un List<Integer> puedes tener valores nulos.
Ningún valor del array puede ser nulo porque no puedes cambiar el tipo, eso se llama ser "mutable", un objeto de java puede tener varios tipos, por ejemplo un "Integer" puede ser objeto de tipo int y null al mismo tiempo (por eso existen las anotaciones @Nullable y @NotNull), en cambio el primitivo no puede ser nulo o dará excepción, en Java da excepción de tipo y en c++ excepción de memoria a menos que lo establezcas a \0, pero no se recomienda para un tipo int.