Hello @MariosOreo,
It seems to me that x and y should be treated as different objects. The reason they share storage is for performance (saving memory & not copying the original tensor).
Moreover, the is operator is very restrictive. For instance, [] is [] returns False, whereas [] == [] returns True. In the first case python tests whether two different empty lists are the same object, which by construction is false. In the second case, python tests whether two list objects have the same value, which is true. Back to our case, I think now it is clear why x is y returns False.