E' uguale Carlo - HTMLCollection è puristicamente più corretto ma all' atto pratico, per quel che ci devi fare, è una array. Chi usa getElementsByTagName fa uno scan con un ciclo, cioè utilizza l'oggetto come array: non esistono, sull' oggetto ritornato, operazioni che permettano di distinguere HTMLCollection da array.

Per quello che riguarda il metodo push è questione di preferenze personali - per fortuna in programmazione c'è più di un modo di fare le cose.
Io personalmente (ma non pretendo che la mia posizione debba essere condivisa) non uso push sift pop e unshift per manipolare una array in quanto come metodi esistono, ma solo quando, nella array che manipolo, voglio rendere patente l'aspetto FIFO o LIFO - e non è questo il caso.
Ma se uno vuole può usare anche push se preferisce.

semmai, forse ti è sfuggita una altra cosa (ti vedo dell' umore di discutere di teoria, e a me sta bene e lo dico senza ironie!), che invece è singolare nel mio codice:
inputPassword[++inputPassword.length-1]

Noti nulla di strano?
Beh se no n noti nulla, te lo rivelo io bastava scrivere: [inputPassword.length]
Come mai prima incremento e poi decremento, operazione apparentemente futile?