Eu também não entendi o por quê de redefinir o cronômetro pra null. Mas pelo que entendi das minhas pesquisas nas documentações aí pela internet:
Quando a gente define o intervaloID = setInterval(func, time), a função setInterval retorna o id do intervalo, não o intervalo em si. E a clearInterval vai lá e termina o intervalo com aquele id que foi passado pra ela.
Mas acontece que tem uma outra função chamada setTimeout(func, time). Enquanto a setInterval executa func continuamente a cada intervalo de tempo time, a setTimeout executa a func somente uma vez quando depois de um intervalo de tempo time.
O problema parece estar no fato dessas duas funções terem o mesmo conjunto de ids possíveis. Então, podedmos ter problemas caso estejamos lidando com multiplos intervalos e timeOuts.
Imaginemos que nós criamos um Timeout. timeoutID = setTimeout(func1, 1000). Depois de 1seg esse Timeout é executado. Nós finalizamos ele com clearTimeout(timeoutID), mas n'ao limpamos a variável timeoutID. Mas pra frente, a gente cria um interval com intervaloID = setInterval(func, time). Mas como elas compartilham o mesmo conjunto de possíveis IDs, agora o timeoutID tem o ID do intervalo e isso pode gerar problemas . Então parece que é uma boa prática zerar o ID quando acabar com o intervalo ou timeout.
Mas ainda tem algumas pessoas que podem argumentar que isso não é bom porque você tá mudando o tipo de uma variável que antes era número pra null, que é um objeto. Mas eu não tenho experiência pra argumentar :v
Por favor, algum tutor pode completar e me corrigir :)
Links:
https://stackoverflow.com/questions/40869259/is-it-necessary-to-set-the-id-of-setinterval-variable-to-null-after-clearinterva
https://developer.mozilla.org/en-US/docs/Web/API/setInterval
https://developer.mozilla.org/en-US/docs/Web/API/clearInterval
https://developer.mozilla.org/en-US/docs/Web/API/setTimeout
https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout