Scusa ma non ho capito il senso della tua domanda.
In linea di massima, per ogni chiamata della funzione setInterval() e setTimeout viene restituito un ID incrementale (ed ovviamente univoco) che è possibile utilizzare per terminare il relativo timer attraverso le funzioni clearInterval() e clearTimeout().
Teoricamente un timer può essere avviato anche senza dichiarare e associargli alcuna variabile, ma semplicemente chiamando la funzione.
Il fatto di dichiarare una variabile, a cui attribuire il relativo ID di un determinato timer, assicura la possibilità di terminare opportunamente quello specifico timer semplicemente passando tale variabile (cioè il valore ID di quel dato timer) alla funzione clear. Tutto qui.
Sta quindi a te dichiarare in modo adeguato quella variabile per poterla passare opportunamente al clear. Il fatto di dichiararla localmente (dentro una funzione) o nello scope globale (sul livello principale), devi deciderlo tu in base a quelle che sono le esigenze del caso.
L'importante, però, è che tu capisca il meccanismo di funzionamento delle variabili e di quelle particolari funzioni che stai usando.
...
Faccio un errata-corrige di quanto ho affermato nel precedente post:
In realtà, per l'interprete JavaScript sulla maggior parte degli attuali browser (se non su tutti), entrambe le funzioni, setInterval e setTimeout, attualmente fanno riferimento ad una stessa funzione principale che inizializza le varie istanze timer in uno stesso elenco. Le due funzioni, clearInterval e clearTimeout, agiscono entrambe su questo stesso elenco, per cui risulta possibile usarle indifferentemente per terminare un qualsiasi timer che sia stato avviato tramite clearInterval o tramite clearTimeout.Inoltre setInterval va terminato con clearInterval, mentre setTimeout col relativo clearTimeout. Non è possibile mischiare le due cose come hai cercato di fare.
Personalmente, per una questione di pulizia e leggibilità del codice, trovo comunque più adeguato utilizzare le due funzioni in modo corrispettivo.