<p>Why is the generic.list slower than array?</p>

A generic list is slightly slower than an array, but not so you'd notice in most cases.  Mostly it has to do with the lookup being slightly more complex: List is said to use an array "under the hood", but it's not not guaranteed to keep nodes in adjacent memory in the same way in array is.
However, I saw some benchmarks way back in 2005 (can't find the link now) and difference is
very
small.
Also, the list has a number of important advantages over an array: mainly that it's trivial to add or remove items.  It's much easier to use a list when you don't know how many items you will need, or when that number will vary.  In those cases (and honestly, that's
most of the time
), you probably should
not
use an array.