na primeira o s.o. pode oferecer bytes 'contiguos' para a aplicacao
Nas duas ele pode. Tanto o Array quanto o ArrayList são partes sequenciais da memória.
A diferença é que o ArrayList trata toda a alocação de memória para você.
Em C/C++ seria exatamente o mesmo funcionamento da função realloc