It seems R internally implements lists as vectors. "Lists are VECSXP [...]" -- R internals.
That is, lists are generic vectors.
Generic vectors must be vectors containing pointers to their elements instead of storing the elements themselves in the vector position. This creates a vector that can store any element in it, hence the term "generic". (Assuming this proceeds, ...)
So lists can be represented by generic vectors. What happens when I want to append a new element to a list (which is internally a vector) whose internal vector doesn't have any more space for a new element? Is the vector reallocated?
Related question: Why does is.vector() return TRUE for list?