A list like { x, y } contains the names of the variables, not their values. Some JSL functions will dig the values out; line( {x1, y1}, {x2, y2} ) for example.
The EvalList function accepts a list with expressions, maybe as simple as a variable name, evaluates them and returns a new list, { 3, 4 }.
The Insert Into function notices the value it is inserting is a list and unpacks the list to get the elements to insert. That's why you have a list with one element that is another list of two elements: you want to insert the two element list without unpacking it, so you wrap it in a list.
But now you have to figure out how to do the eval list on the inner list of the nested list. You can do it, with something like this:
x=3;
y=4;
evallist({evallist({x,y})}) // {{3, 4}}
Here's a shortcut that is easier or harder to understand
x=3;
y=4;
aslist(x||y) // {{3, 4}}
AsList upacks the matrix into a list and makes a list of lists of row elements; the || concatenation operator puts two (or more) numbers together into a row matrix.
Craige