So this is very likely due to the way that the multi-instance is re-synchronized with the process.
So - it’s possible that more than one thread want to complete it’s subprosses at the same time. Camunda will only let one thread be active on a single process instance in order to ensure consistency of state.
So - one of the threads is successful but he other one will be rolled back and then retry.
This can be fixed if you put an async before on the end-event. It will still rollback the transaction but it won’t re-run the code in the service task.