The callback function is invoked in Start -- it's the same behaviour as other NGUI scripts -- checkbox, for example. This is for consistency purposes. The selected item is both highlighted, and whatever the callback is supposed to do also happens. For example if you loaded something from player prefs in awake and set the value of the popup list, and the callback function was changing the game map (and the game map texture), without this functionality the game map would never change to the selected value, which would be wrong.