Как отменить SetInterval?
Можно вынести переменную с id таймера за пределы функции, тогда при вызове clearTimeout будет доступна актуальная ссылка. Но удобнее и корректнее хранить id таймера в замыкании, таким образом, код можно будет использовать много раз. 
let el = document.getElementById('a');

function func(){
  let timeId;
  
  const handleScroll = () => {
    let scrollPos = window.pageYOffset;
    document.getElementById('z').innerHTML = scrollPos;
    if(scrollPos > 600) {
      if(!el.classList.contains('timer')) {
        el.classList.add('timer');

        let b = 60;
        timeId = setInterval(() => {
          b--;
          el.innerHTML=b;
          if(b == 0){
            el.classList.remove('timer');
            clearInterval(timeId);
            alert('Отлично!');
          }
        }, 1000);
      }  
    } else {
      console.warn('stop');
      clearInterval(timeId);
    }
  }
  window.addEventListener('scroll', handleScroll); 
}

func();
Вынес определение переменной за функцию и все заработало.
Странно, что перед тем как здесь писать, я это проверил и не работало.
Но ночь была темной, наверно что-то не так делал.
Решение простое, но никто не подсказал.
snippet