Something that differs from Redux to Vuex is that state changes don't create a new state. Vue feigns immutability, but for performance, actually mutates the state and tracks the mutations through reactive channels. It's a neat trick, but as you've discovered, has some mild side-effects.
When you change the state directly, like through a component or from an action, you aren't using those official mutation channels. I've debugged code where it look like this works, but then found bugs later because the reactivity didn't kick in all the way and updates weren't happening.
It should also be mentioned that debugging Vuex through the Vue dev tools, which is really handy, won't show you any state changes unless you use mutations. Also if you have any Vuex plugins, they won't execute unless there's a mutation.
Beyond all of these technical reasons, which may seem sort of vague, I feel the need to point out how this is absolutely not the way of the flux framework for state changes. Coming from the React world, you know that state changes should happen in a big circle; In Redux, components call actions, which call a reducer to return a new state, which is then applied and the app is re-rendered and ready for another change from the component. The framework forces that order to decouple the UI from the state (though I would argue that this isn't a good idea) and to make sure all state changes happen in one place. The same is true with Vuex mutations - this is where all state changes should happen.
Pushing past this as the current state (pun not intended) of things, it should be noted that you can do some very interesting things in Vue 3. One of them is that you can make a reactive object outside of your Vue components, import that object into your components as the global state, and mutate it all you like. Vue 3 will keep those mutations in sync with the whole application, and with some planning, it could make for a very capable Vuex replacement.
Hot on the heels of that, the next Vuex looks like it may be ditching the concept of separate mutations, and could have all your state change directly through actions or something else. I bet it will use the Vue 3 reactivity system as described above, with Vuex's thoughts on module organization to make a very simple framework.
All that to say, your intuitions are correct for the way forward, but may be premature for today.