Premature optimisation is the root of all evil. - D. Knuth.
This seems like the kind of "performance issue" which actually never has any effect on performance. For one thing, how sure are you that these empty lists are actually initialised? I suspect that most modern compilers delay initialisation of objects until they know for sure that there will be a call on them. So if you pass the no arg constructor it will most likely never be used unless something is added to the list. On the other hand, if you use the 0 argument constructor, it guarantees that it has to resize every one that it uses.
These are the three laws of performance optimisation
- Never assume that you know what the compiled code is actually doing, or that you can sport small optimisations better than the compiler can.
- Never optimise without using a profiler to work out where the bottleneck is. If you think that you know, refer to rule number (1).
- Don't bother unless your application has a performance issue. Then refer to rule (2).
On the off chance that you somehow still believe that you understand compilers, check out this question: Why is it faster to process a sorted array than an unsorted array?