Потому что такой вот C#.
Чтобы поменять значение transform.position - тебе нужен новый экземпляр Vector2.
Чтобы создать новый экземпляр чего угодно в C# тебе нужно писать new.
Исключение - фабричные методы/свойства, которые сделают new вместо тебя.
Например, в случае Vector2 он мог бы выглядеть так: var newVector = Vector2.Create(x, y)
, но такого метода по понятным причинам нет, ибо он просто сразу будет вызывать конструктор