Итак, господа!
Указывать transform.position, как оказалось, это совсем не про то, получается совсем не то, что надо.
Чтобы добиться результата, надо указывать anchoredPosition, который есть у компонента RectTransform. Он, хоть и наследник Transform, но просто по .transform до него не достучаться, нужно "по матчасти" вызывать его через GetComponent.
Собственно решение:
// Инстансим UI элемент
GameObject attackButton = (GameObject)GameObject.Instantiate(Resources.Load("Prefabs/GUI/DummySkills/Attack", typeof(GameObject)));
// Получаем его компонент RectTransform
RectTransform attackTransform = attackButton.GetComponent<RectTransform>();
// Задаём парента
attackTransform.SetParent(GameObject.Find("UI").transform);
// Задаём позицию
attackTransform.anchoredPosition = new Vector2(500,-200);
// Теперь позиция задаётся корректно!