Есть проблема - коммуникация между компонентами, не находящимися в одном иерархическом древе. Ее решение - это использование экземпляра Vue, как шины, для подписки/вызова событий.
Пример в официальной документации.
Когда есть вероятность, что такое решение может быть недостаточно мощным или удобным, стоит брать на вооружение Vuex. Помимо этого, Vuex позволяет также намного более прозрачно структурировать ваш код, особенно в этом могут помочь его система модулей.
Но все же бытует мнение (не мое), что острой необходимости во Vuex нет и лишь 1% проектов может его реально потребовать. Однако это не повод от него отказываться, конечно же :)