While reusing open source software components is a good thing, there is a point of diminishing returns if you require your users to download n non-standard packages from m different sites. This is quickly becoming a non-issue with STL, though. The third issue here is why we might want our own List class.
Information hiding aside, there is a very good reason for making every function a member function.
It assists in organization. I want to add two vectors together, where might I find such a function. While not a perfect organization, with the IFCs you know to consistently look in the Vector class for this functionality. This is not really the case. We will provide a layer of abstraction, though, hiding the internals of these external packages so users need only deal with our interface that is consistent across all file types.