Cuando está utilizando el segundo enfoque, está inicializando el arraylist con sus valores predefinidos. Como generalmente hacemos ArrayList listofStrings = new ArrayList <>(); Digamos que tiene una matriz con valores, ahora quiere convertir esta matriz en una lista de arrays.
primero necesita obtener la lista de la matriz utilizando Arrays utils. Porque ArrayList es un tipo concreto que implementa la interfaz de lista. No se garantiza que el método asList regrese a este tipo de implementación.
List<String> listofOptions = (List<String>) Arrays.asList(options);
luego puede crear el usuario de una lista de arrays para crear instancias con valores predefinidos.
ArrayList<String> arrlistofOptions = new ArrayList<String>(list);
Así que su segundo enfoque está trabajando que ha pasado los valores que intantiate ArrayList con los elementos de la lista.
Más sobre
ArrayList que se devuelve desde matrices.asList no es una lista de arrays real, es solo un contenedor que no permite ninguna modificación en la lista. Si intenta añadir o eliminar más Arrays.asList que le dará
UnsupportedOperationException