Scratch lists seem relatively first-class to me. Your son could probably have fun building simple data structures with them by making blocks that take an input. He can also update a "return" variable if the situation calls for it.
Lists can't contain lists, nor can they be passed as inputs to blocks, unless you encode them as text or numbers.