Deyvison, boa tarde. Fazendo umas pesquisas, acredito que pode ser pelo seguinte motivo.
A propriedade hibernate.transaction.flush_before_completion é usada para "Container Managed Transaction (CMT)" ou JTA. Se definido como verdadeiro, um flush será executado antes da fase de conclusão da transação, enviando todos os dados para o banco de dados (uma reversão ainda é possível). Esta liberação não é gerenciada pela sessão de hibernação.
Como uma característica do flush é fazer com que as operações no banco não sejam realizadas pontualmente, para sincronizar mais tardiamente, talvez pelo fato de o job ficar enviando dados a cada pouco tempo, pode ser que a transação nunca seja commitada, fazendo que ocorra esse loop.
Usei algumas fontes de pesquisa e extrair essas informações, porém não achei nada que use de fato esse cenário que você trouxe para nós. O que acha, faz sentido a minha conclusão? Qualquer coisa podemos discutir mais =)