Olá, João. Tudo bom? Basicamente o problema da abordagem de criar uma thread secundaria é que não se leva em consideração a capacidade de processamento da aplicação que irá consumir as mensagens. Por exemplo, se isto fosse um e-commerce e você tivesse um número grande de compras realizadas no mesmo momento, a sua aplicação iria mandar todas as notas para serem processadas de uma vez, podendo ocasionar um gargalo na aplicação de destino (webservice por exemplo). Com o fluxo reativo, você paraleliza o envio das mensagens, porém essa mensagem pode ser configurada para ficar persistida em um repositório, até o momento em que a aplicação de destino puder processa-la. Neste momento ele "puxará" a mensagem. De fato não é uma solução para todos os cenários e dependendo da situação pode mais atrapalhar do que ajudar. Porém em cenários que podem ocorrer concorrência, é bom, pois com a implementação acima se respeita o back pressure.