Perché 255 è il massimo valore che puoi esprimere con un byte. Un byte è composto da 8 bit, con i quali puoi rappresentare 256 valori differenti, ovvero da 0 a 255.
Ai tempi quando sviluppavi un videogioco, avevi risorse macchina e quindi di memoria decisamente limitate. Tendevi sicuramente più di oggi a ottimizzare ed evitare sprechi.
Se con un byte avevi a disposizione 255 valori differenti, tendevi a utilizzarli tutti quanti.
Inoltre salvare lo stato di un personaggio occupava davvero poco (considerate che i caratteri testuali vengono rappresentati da 1 byte - senza tirare in ballo l'UTF - quindi pensate a quante statistiche di quanti personaggi si sarebbero potute salvare con il testo scritto in questo post)
Per quanto riguarda il discorso dei danni fino a 9999 invece, è tutt'altra questione dato che per rappresentare tale numero si necessitano comunque 14 bit, che permettono di rappresentare 16384 valori differenti, quindi a 10000 ci si potrebbe arrivare tranquillamente. Non è più uno spreco in termini di memoria, è probabilmente una scelta di layout: si tratta di visualizzare e gestire lo spazio per 4 cifre invece di 5.
Ed effettivamente aggiungere una cifra solo per un punto in più, non ne vale la pena: da 9999 a 10000 non c'è tutta questa gran differenza, numericamente parlando, in termini di HP, danni, soldi e quant'altro. E approfittare della cifra in più per visualizzare la capienza massima data dai bit utilizzati, avrebbe poco senso: pochi capirebbero come mai il limite di danni e HP è "16383".