I believe it has to with that fact that array comparison in .NET only compares that the two objects refer to the same object, not that they have equivalent values. Consider:
# ~> @(2,3).Equals(@(2,3))
False
# ~> $arr = @(2,3)
# ~> $arr.Equals($arr)
True
# ~> $arr.Equals(@(2,3))
False
# ~> @(1, $arr) -eq $arr
2
3