The method returns a NURBS curve rather than works on an existing curve. The reason behind this is that in the previous SDK you'd have to go through an "alternative" class, such as RhUtil or OnUtil to be able to create a nurbs curve from scratch. There wasn't really a "problem" with this except that it was somewhat hard to discover, so it was changed.
If you look closely at the documentation you'll notice that the function is declared as static (C#) or Shared (VB). What that means is that the function is constant and doesn't rely on a unique instance of the class being created in order to do its job. This means that you don't have to create a NurbsCurve just to be able to use that function, which is not the case with many other methods.
So you're essentially asking what the differences is between the a Systems.Collection.Generic.List and a Rhino.Collections.Point3dList. Well, they are different classes that do just about the same thing, although it appears that the Point3dList has some specialized functionality to retrieve the X,Y, and Z values of the list without retrieving the specific object first. Ultimately, if the method that you're looking to use calls for a Point3dList, you can't supply a List. However you can create a Point3dList from a regular old dotNET list...
Point3dList my3dPointList = new Point3dList(myListOfPoint3d);