Основная разница - это контроль границ. В runtime, java не позволит вам выскочить вне диапазона индексов.
В c++ runtime - никакого массива не существует. Можно как получать различные аномалии в поведении приложения, (повредить другие структуры данных процесса), так и получать молчаливое поведение, что усложняет поиск ошибок.