Beh, quello è normale...come ti ho detto onchange scatta quando modifichi il valore del campo a cui è associato. In un menu a tendina, per default viene mostrata la prima voce se non imposti l'attributo selected in una voce specifica. Quindi, dato che la prima voce è già quella selezionata per default, il valore del campo non è considerato modificato se la selezioni e di conseguenza onchange non scatta. Creando una voce fittizia per prima risolvi appunto il problema, dato che il valore del campo sarà per forza modificato quando l'utente sceglie una voce tra le altre valide disponibili.