Ваша сетка - это ваша внутренняя модель данных (т.е. никто, кроме вас, не будет ее использовать). Вот почему вы можете выбрать тот, который наиболее удобен для вас.
Я бы предпочел первое решение с массивами, потому что код будет немного более читабельным (по крайней мере, для меня). Просто сравните:
grid[3][4] = element;
и
grid.get(3).add(4, element);
Более того, если вы хотите использовать коллекции, то вам, вероятно, нужно использовать
Map<Integer, List<Element>> grid
где Integer-ключ представляет индекс строки. Со списком списков очень сложно вставить новые слова (просто подумайте, как бы вы реализовали это только со списками).