One of the to use a generic list instead of an ArrayList, is that ArrayList accepts objects on any type, and if you intend to store only objects of a given type, this can lead to runtime errors that can't happen with generics.
Example:
var numbers=new ArrayList();
numbers.Add(1);
numbers.Add("abcd"); //This will compile!
int theNumber=(int)numbers[1]; //This will cause an exception
When using a generic list, you ensure that only the desired type is stored in the list:
var numbers=new List<int>();
numbers.Add(1);
numbers.Add("abcd"); //This will NOT compile