Зачем в ES6 get и set?
Потому что аксессоры в JS предназначены для того, чтобы задать какую-то логику на геттер или сеттер. Таким образом можно, например, реализовать счетчик того, сколько раз какое-то свойство было изменено и т.п.
Да и с помощью них можно реализовать такую штуку как:var Test;
(function() {
  var super_priv = 1;
  Test = class {
    get priv() {
      return super_priv;
    }
    set priv(val) {
      super_priv = val;
      return priv;
    }
  };
})();
Можно делать свойства, вычисляемые на лету (пример супербоянистый):get fullName() { return `${this.name} ${this.surname}`; },
set fullName(value) { [this.name, this.surname] = value.split(' '); },
Можно сделать автоматическую персистентность (не очень удачная идея, если честно, но иногда надо):set someProp(value) { localStorage.set('someProp', value) }
Можно прикрутить временное логирование для отлова обращений к свойству.
Vue.js использует акцессоры для имплементации реактивности.
На самом деле, применений не так уж много, но иногда нужно.