Он же не подписывается на изменения всего стейта
Почему тогда отслеживать поля, которые не нужны
Потому что он не отслеживает поля, он отслеживает всё, что использует при вычислении. Объект с ключами используется.
А Vue.set должен известить всех, кто подписан на объект, о появлении нового свойства. То же самое и с Vue.delete.