Сначала, установив для массива значение null, вы фактически сообщаете GC, что он может проверить все в этом массиве и очистить его при необходимости.Таким образом, нет необходимости перебирать элементы, даже если вы не собираетесь делать новое сразу.
При этом, единственное время, когда вам действительно понадобится явно установить переменную (для целей GCв любом случае) быть явно NULL, если вам больше не нужны данные, на которые указывает эта переменная, но у вас нет ничего нового, чтобы поставить его на место И переменная по какой-либо причине останется в области действия некоторое время.В этом случае рекомендуется установить значение в null или, еще лучше, переделать ваш код так, чтобы переменная вышла из области видимости, и это сделано для вас.
Так, например, в вашем примере скажите arrбыл статическим членом некоторого класса, и вам просто нужно было выполнить некоторую обработку массива при запуске и никогда больше не смотреть на него.В этом случае содержимое arr будет зависать в течение всего времени, пока ваша программа работает, ЕСЛИ вы явно не установите его в null (или присвойте ему новое значение).