The is operator does not match the values of the variables, but the instances themselves.
is
What does it really mean?
X points to an array, Y points to a different array. Those arrays are identical, but the is operator will look at those pointers, which are not identical.