List is an interface while Arraylist is its implementation class.There are many other implementations of list also.
So, their is no underlying implementation difference between both. However, as Arraylist is an implementation class of List it can access all methods the list provides + few methods restricted to arraylist only (defined in Arraylist) like. ensureCapacity .
What i prefer is List<Integer> as its base implementation, and converting list to arraylist / linkedlist is just a function whenever required.