Olá Jefferson!
Entendo a sua dúvida. O MobX é uma biblioteca que permite a criação de classes observáveis, que notificam automaticamente quando ocorrem mudanças em seus valores. Com isso, é possível atualizar a interface do usuário de forma reativa, sem a necessidade de utilizar o setState.
No caso do ItemStore, como você mencionou, não foi necessário utilizar o Provider, pois o Observer foi suficiente para refletir a mudança na tela. Isso acontece porque o Observer é um widget que escuta as mudanças dos observables e atualiza a interface automaticamente.
Já no caso do CarrinhoStore, a utilização do Provider é necessária porque ele é responsável por injetar a instância do CarrinhoStore em todos os widgets que precisam acessá-lo. Isso é importante para garantir que todos os widgets estejam utilizando a mesma instância do CarrinhoStore e, assim, as mudanças feitas em um widget sejam refletidas em todos os outros.
Espero ter ajudado a esclarecer a sua dúvida. Se tiver mais alguma pergunta, é só perguntar!
Espero ter ajudado e bons estudos!