Ci sono diverse risposte possibili a questa domanda da diversi punti di vista.
Iniziamo con l'approccio pratico. Ci sono semplicemente cose che possono essere divise solo in unità di una. Allo stesso tempo, per un determinato problema, può esserci il vincolo che tutte le parti devono essere uguali. Se si desidera dividere dieci centesimi tra tre persone e ciascuno di essi per ottenere una quota uguale, si rimane con un centesimo. Se hai uno schermo con 128 pixel di larghezza e un tavolo con dieci colonne ciascuno può avere 12 pixel e ti restano 8 pixel. Dividi quelli per due e sai dove posizionare il tavolo per centrarlo.
Da una visione matematica: qui può essere semplicemente una questione di definizione quale sistema numerico devi usare (numeri naturali, numeri interi, razionali, ecc.). Se il calcolo è limitato a numeri naturali o interi, non ci sono posizioni decimali. C'è una definizione chiara per questo in matematica: Resto (non sono un matematico, quindi spero che questa spiegazione non sia troppo semplificato)
Per computer e linguaggi di programmazione c'è spesso una strong differenza tra numeri interi e numeri in virgola mobile perché la loro rappresentazione binaria è diversa. Oggi non fa più una differenza così grande, ma le operazioni su interi erano più veloci di un'operazione in virgola mobile. E il numero di bit che possono essere usati per contenere un numero è limitato, quindi non sono possibili decimali ricorrenti (ci sono eccezioni in alcune lingue o librerie) che potrebbero portare a risultati di tali calcoli non esatti. Come puoi vedere dal link di Benjamin, in matematica 0.999 ... equivale a 1, per un computer questo non sarebbe il caso.
Molti linguaggi di programmazione hanno diversi tipi di dati per interi e float. Javascript non fa questa differenziazione. Ma per molte ragioni (come nei miei esempi sopra) ha ancora l'operatore modulo poiché ci sono applicazioni pratiche tanto quanto semplicemente completa l'insieme di operatori matematici per un'operazione ben definita.