Another reason to use regular arrays, is when you are working with platform invoke (execute unmanaged c/c++ code), but this is limited to a very small set of applications
Also, as a remark: if the size of the array is known but you still want to use a generic list, don't forget to pass the size to the capacity parameter of the constructor.
for example:
List<int> lst = new List<int> (100);
Otherwise, the list will start with a very small capacity, and will several times need to allocate new chunks of memory, instead of allocating the required space at once.