The simple answer is laziness :-)
In a perfect programming paradigm, we are not allowed to use the state directly. The state should mutate only through mutations. It helps us track changes down and build a timeline to trace modifications. Redux, for instance, shows you a play/pause button so we can observe the data changing as time runs by.
The main downside of using the state directly gets modified. If a part of the state changes, it breaks the time travel. Mapping the state arises the risk of modifying data outlaw. Most modifications occur intentionally. In this matter, binding them to a model or sending them into a mutable function. It will blow out your console's logs by enormous errors. (there is a strict config to switch it off)
The main advantage of using MapGetters is that the state cannot be manipulated accidentally. Furthermore, providing getters helps us add some extra logic. For example, set a default value, filter lists, map or transform, and limit the returned object/value. Also, getters are access to the whole of the state, thus they can apply some logic or implement business from the entire state. It encapsulates rules and prevents code leaking.
Using state directly may put the program in a real riddle by increasing the risk of being manipulated. As a de facto, use getters wherever you need to read the state. For one, at first, it was boring and seemed unnecessary, but as a project grows more, you appreciate it more. Finally, Vue 3 has deprecated Vuex and suggests Pinia as a better alternative.
Also, see Best Practice Mapping Vuex
Why Pinia for Vue 3