Ancora meglio senza apici, quindi:

codice:
window.onload = function() {

  function next() {}
  
  function b() {
    setInterval(next, 1000);
  }

};
setInterval e setTimeout accettano come primo argomento una funzione. Quando tu scrivi next() con le parentesi in realtà stai invocando la funzione e quindi ciò che passi è il risultato di next (cioè quello che restitusci con un "return").

Nel tuo caso funziona perché stai passando a setInterval una funzione anonima che, a sua volta, esegue next dopo i millisecondi indicati.

La soluzione migliore, cmq è quella indicata da vindav perché ti eviti di introdurre una funzione anonima inutile.

ciao!