This is occurring because you are assigning a length 1 vector to a NULL atomic vector.

From help(Extract) -

When $<- is applied to a NULL x, it first coerces x to list(). This is what also happens with [[<- if the replacement value value is of length greater than one: if value has length 1 or 0, x is first coerced to a zero-length vector of the type of value.

Change the assignment to ... <- 1:2 (or something other than a length 0 or 1 vector) and you will get the same result in both code blocks.