Pasa que el método del synchrinize service es asincronico (fijate que tiene un @Async), por eso el listener. Acá llama al async y devuelve de toque. La onda es que el admin controller no devolviese un timeout como estaba pasando antes, sino que te informe enseguida si pudo empezar una sync o si ya había una corriendo.
La idea es que más allá del job, podamos forzarla nosotros, pero no queremos que se corran 2 procesos de sync a la vez, porque son costosos. Por eso, más allá de que se corra de forma asincrónica está sincronizada su ejecución, y el listener sirve para saber cuando termino esa ejecución asincrónica.
Se entiende o hice una ensalada de palabras?