La domanda è "perché qualcuno dovrebbe tenere premuto un qualsivoglia tasto o scrivere una sequenza di lettere uguali in quel modo lì"?! 
Qual'è la probabilità che accada questo? ..e soprattutto, perché potrebbe accadere?
Se accade spesso, suppongo dipenda dal fatto che il tuo codice abbia parecchi rallentamenti dovuti più che altro alle chiamate Ajax e a tutto il sistema che stai usando per creare il dropdown dei termini validi e verificarne la corrispondenza col testo inserito. Dalla console web noto, tra l'altro, che avviene una doppia chiamata...
anche adesso si blocca tutto se si tiene premuto a lungo un tasto ma sopporta di più di prima questa situazione.
boh, non so ma la cosa mi pare macchinosa e un po' contorta (imho ovviamente) a prescindere dall'aggiunta che vuoi inserire, oggetto di questa discussione. Io ho l'impressione che già il sistema che hai, senza quest'ultima aggiunta, sia abbastanza instabile.
Ad ogni modo proverei ad impedire la/le richieste al server qualora avvenga la "cancellazione" delle lettere duplicate. Infatti (in linea di massima), in tal caso il testo non subisce variazioni rispetto alla situazione precedente (cioè quando la lettera duplicata viene eliminata), per cui non avrebbe senso aggiornare l'elenco dei termini ed eseguire tutto l'ambaradan che ci sta dietro, il quale va a creare rallentamenti.
anch'io usavo un replace ma era un codice più complicato del tuo in cui testato dapprima se erano state battute troppe lettere uguali per poi toglierle ma la regex mi dava dei problemi in fase di replace
Potrebbe essere la strada giusta, e in tal caso dovresti interrompere la funzione se il test è positivo, così da non lanciare ulteriori richieste al server.
Io farei qualcosa del genere (poi vedi tu come applicarlo al tuo elaborato):
codice:
<!DOCTYPE HTML>
<html>
<head>
<title>Esempio</title>
<meta charset="utf-8">
</head>
<body>
<input id="tuoinput">
<script>
var i=0
function limita(event){
var reg = /(.)\1{2,}/g;
if (reg.test(this.value)){
this.value = this.value.replace(reg,'$1$1');
return; // SE CI SONO RIPETIZIONI LA FUNZIONE SI INTERROMPE QUI
}
// ALTRIMENTI, QUI IL RESTO DELLE AZIONI, CHIAMATE AJAX E COMPAGNIA CANTANTE
// ...
}
tuoinput.addEventListener('input', limita);
limita.call(tuoinput);
</script>
</body>
</html>