There is no particular Reason:
List is an interface and ArrayList is an Implementation of the List interface.
If you use ArrayList alist=new ArrayList();, it will be less generic.
Another point is: Normally as a good programming practice, always give return types as Interfaces