An array of existing arrays
Try this:

byte (*sequence[])[4][2] = { lines, circles, squares } ;


Explanation: The identifiers lines, circles and squares decay
to pointers to the first element of each array. Their decayed types are
then “pointer to array of length 4 of array of length 2 of byte”. This
type could be declared as

typedef byte (*pointer_to_2d_array)[4][2];


The sequence is then an array of this type, which can be declared as

pointer_to_2d_array sequence[] = { ... };


or, if you appreciate the obscure elegance of the C syntax, as in the
beginning of this answer.