Есть два пути:
1) vuex.
Берем vuex, в нем создаем дерево, где например объекты это еще один уровень дерева, а где массив это конечный элемент с чекбоксам. Создаем компонент который пропсом полуает дочернее дерево и путь к нему, он проверяет пришедший элемент если это массив рисуем элементы чекбоксы, если объект то рисуем компоненты из всех ветвей дерева, в который передаем уже из отдельные ветви. Также нужно не забыть передавать попутно условный путь по которому можно дойти до текущей ветки, это понадобится когда в vuex будете обращаться к значению привязаному к конкретному чекбоксу, и вот самое интересное что нам поможет lodash и его методы _.get(), _.set() с помощью них мы во время мутации состояния попадать по пути к нужному значению.
2) второй вариант то же самое только вместо вуекса бесконечные эмиты к родительскому компоненту хранящему значение