Hola:
ArrayList implementa List, así que ArrayList tiene todos los métodos de List más lo que él mismo defina. Siempre tendrás igual o más métodos disponible en una clase (ArrayList) que en su interfaz (List).
¿Por qué se usa List?
Imagina un método que hagas así
a ese método sólo puedes pasarlo un ArrayList, o clases hijas de ArrayList, sin embargo, si lo haces así
podrías pasar al método un List o cualquier clase hija, es decir, ArrayList, LinkedList, etc. El método es más "general", ya que admite más tipos de listas.
En general, siempre que sea posible, es mejor que los métodos admitan o devuelvan interfaces en vez de clases concretas.
Se bueno.