I think Synchronization (i.e. Thread safety) is the main difference. Because of which one more thing comes into picture that is "speed(or performance)" of the operations on these collection objects.
When you know that there will not be multiple threads accesing the collection object you should use the ArrayList instead of vector.