Еще одно важное различие: в первом случае мы можем задавать размер массива динамически, в процессе работы программы:
int size = 0;
cout << "Введите размер массива: "; cin >> size;
int *arr = new int[size];
Во втором случае мы обязаны предоставить число, которое будет известно (вычеслено) на этапе компиляции - константу или результат константного выражения (constexpr):
const int SIZE = 333 + 768 * 2;
int arr[SIZE];