Вы должны добавлять значения в массив там, где эта ваша переменная изменяется. Остальные варианты - говнокод.
В можете, если переменная глобальная, поставить вместо неё геттер с сеттером, но это имеет смысл только в каких-нить в юзерскриптах.
<script>
function watchGlobalVariable(name, array = []) {
var value
Object.defineProperty(window, name, {
get(){
return value;
},
set(newValue) {
array.push(value = newValue);
},
enumerable: true,
configurable: true
})
return array;
}
var fruits = ["Яблоко", "Апельсин"];
watchGlobalVariable('t', fruits);
</script>
<script>
var t = "манго";
t='банан';
t='кокос';
t='груша';
document.write(fruits)
</script>