Il n'y a pas de différence entre les implémentations des listes dans vos deux exemples. Il y a cependant une différence dans la façon dont vous pouvez utiliser la variable myList dans votre code.
Quand vous définissez votre liste comme :
List myList = new ArrayList();
vous pouvez uniquement appeler des méthodes et référencer des membres qui sont définis dans l'interface List. Si vous la définissez comme :
ArrayList myList = new ArrayList();
vous pourrez invoquer des méthodes spécifiques à ArrayList et utiliser des membres spécifiques à ArrayList en plus de ceux dont les définitions sont héritées de List.
Néanmoins, lorsque vous appelez une méthode de l'interface List dans le premier exemple, qui a été implémentée dans ArrayList, la méthode d'ArrayList sera appelée (car l'interface List n'implémente aucune méthode).
C'est ce qu'on appelle le polymorphisme. Vous pouvez vous documenter à ce sujet.