The output length is being governed by the shortest list length within the data-set due to lacing.
This is the built-in behaviour, possibly to avoid data loss if lacing is not set correctly, as I can recall seeing this previously on the forum, such as here.
In cases such as this, using OOTB nodes or a small amount of python will give you the desired result.
input = IN[0]
list1 = [1,2,3]
list2 = [1,2,3,4,5]
list3 = [1,2,3,4,5,6,7]
if input == 1:
OUT = list1
elif input == 2:
OUT = list2
else:
OUT = list3