Добавление элементов в массив (удаление, изменение), как и аналогичные действия над объектами - они не приводят к созданию нового массива/объекта. Так что всё правильно - старые и новые значения одинаковы.
Чтобы иметь доступ к предыдущему значению, надо создавать новый массив. Т.е., например, сейчас у вас есть 
this.array.push('hello'). Вместо этого делайте 
this.array = [ ...this.array, 'hello' ].
Аналогично и с объектами - вместо какого-нибудь 
this.obj.prop = value будет 
this.obj = { ...this.obj, prop: value }.
UPD.
watch: {
    array: function (o, n) {
      this.oldData = o
      this.newData = n
    }
  }
У вас тут старое и новое значение местами перепутаны.