From my testing, I believe that the list is being created, but it is getting lost in the number of columns you have. So I have made a simple change to the code, adding a name for the list, and then telling the list to be moved to the front of the list of columns.
names default to here(1);
dt = Current Data Table();
dtSingle = open ("TCAlist.jmp");
//longList=dt<<get column names(string)
//contains(longList,theList[3])
// Create a group
theList = dtSingle:Cols << get values;
dt << group columns("myList", theList);
dt << move column group( to first, "myList");
// Create a subset
// Select columns in data table dt, that are in dtSingle
try( dt << Select Columns( dtSingle:Cols << get values ));
dtSubset = dt << subset( selected rows(0), selected columns(1) );
Jim