O Mongoid armazena documentos incorporados e atributos de hash praticamente da mesma maneira no nível do banco de dados. É normal ao trabalhar com o mongoid declarar seus campos em seus modelos, portanto, se você tiver uma estrutura aninhada, é normal criar um documento incorporado. Como o MongoDB é sem esquema, o mongoid precisa que você declare campos para apresentá-los no mesmo tipo de API que o ActiveRecord faz. Mas para alguns casos de uso, um atributo Hash oferece um pouco mais de flexibilidade. A desvantagem dessa flexibilidade é que você está limitado à API de hash para não obter métodos de atributo gerados automaticamente e não pode encapsular a lógica de negócios da maneira que normalmente faria em uma classe de modelo.
Como exemplo, suponha que você tenha um modelo de Questionário no qual precise armazenar muitas seções contendo muitos pares de perguntas e respostas. Se um requisito chave do sistema for que o administrador seja capaz de configurar novas seções e perguntas, você não poderá modelar facilmente as respostas como um documento incorporado regular contendo campos explícitos para cada pergunta. Para esse tipo de coisa, um Hash pode fazer mais sentido.
Eu não sei quais são seus requisitos específicos, mas como um guia aproximado, eu diria que quando você está trabalhando com um esquema fixo, fique com um documento incorporado, mas quando você precisa de um modelo aberto, considere os atributos Hash.