1. It is because there is a UIButton Offset script attached to the button. You should turn it off or change the resize values.
2. Yes.
You could do something (similar) to this using GetComponent.
mymenugui.GetComponentsInChildren<UISprite>()[0].spriteName = "image_name";