Looking at this further I believe:
The Nordic version calls the SoftDevice SVC_Handler addr via the SoftDevice interrupt table, which then checks the SVC #. If not in its range of #s to handle the code then loads the application SVC_Handler addr via the secondary (application?? ) interrupt vector table.
Execution then is passed to the proper RTOS SVC_Handler.
The Seeed version calls the Bootloader SVC_Handler addr via it’s interrupt vector table, checks the #, if not in range returns an error code. No attempt is made to pass that SVC on to the app.
As a note, the FreeRTOS code passes an SVC of 0. That will not work. Its a valid # for the Seeed implementation so it will try to do something with it.
In the Nordic world there is something about an extended SVC that I believe #0 is reserved for. FreeRTOS does not actually use the #, so changing it to 3 should be a safe bet.
I’m afraid this is as far as I can take this. I think it would be a benefit if we can get this to work, but it’s beyond me at the moment.