Ciao, credo che il punto del discorso stia nel fatto che l'evento onchange si verifica solo se la variazione del value viene effettuata da parte dell'utente ma non programmaticamente.
Che il campo input sia, o no, disabled o readonly o qualsiasi altra cosa, la situazione non cambia se la tua intenzione è quella di controllare quando il value viene modificato via script.
Attualmente non esiste nessun evento nativo del DOM che faccia al caso.
In genere si può risolvere con l'uso di un setInterval, col quale vai a controllare se il value di tale elemento sia cambiato, ma personalmente, in questo caso, opterei per la soluzione che invece hai scartato.
Puoi crearti una semplice funzione, in cui farai i tuoi controlli su tale input, quindi richiamarla là dove viene aggiornato il value dell'input.