¿porque?
pues es simple... pues estas imprimiendo el HTML!!!
y es obvio, donde ejecutas la función lo imprime.. ¿cierto?
pues eso es exactamente lo que hace la función...
¿como evitarlo?
bueno, en lugar de imprimir el resultado... puedes ir asignando a una variable, y finalmente usas
return para que devuelve el <select/> en lugar de
echo para imprimir...