Можно ли избавиться от setInterval?
Геттеры и сеттеры.
Только если ваша переменная является свойством объекта, тогда вы можете задать свою set-функцию, которая не требует от остальной части скрипта какой-то модификации.
На глобальной переменной my_var делается это так:Object.defineProperty(window /*- объект, где располагается свойство */, "my_var" /* - свойство, которое нужно опекать */,
{
  get: function() // сторожим чтение значения
  {
    alert('Кто-то прочилал my_var!');
  },
  set: function(newValue) // сторожим запись значения
  {
    alert('Кто-то записал my_var! Новое значение: ' + newValue);
  }
});
my_var = 123456;  // пробуем записать что-то
you_var = my_var; // пробуем извлечь значение
а зачем мониторить то?
меняйте все там где переменная меняется