A generic List<> has been designed for speed and internal use. The generic Collection<> on the other hand, has been designed for extensibility.
One of the advantages of the Collection<> class is that you can override a few different methods (ClearItems(), InsertItem(), RemoveItem() and SetItem()). The generic List<> type, on the other hand, provides no methods that can be overriden.
Why does this matter? Say, for example, that future requirements mandate that you raise an ItemAdded event when an item is added to the collection. Had you used the List<> type, you don't have too many options. Had you used the Collection<> class, however, you have the ability to expose a new ItemAdded event and override the InsertItem() method so that it raises the ItemAdded event when an item is added.