There is no run time difference between these two pieces of code. They will both compile down to the same IL.
The primary advantage of the initializer syntax would be that it basically initializes a list in a single expression as opposed to across multiple statements. For example, you could use it to return a list from a method without explicitly creating a temporary variable (the compiler creates this temporary for you):
public List<T> MakeListOf3<T>( T val )
{
return new List<T> { val, val, val };
}
As opposed to:
public List<T> MakeListOf3<T>( T val )
{
var list = new List<T>();
list.Add( val );
list.Add( val );
list.Add( val );
return list;
}
That's quite contrived, but you get the idea.