Upper and lower drivers might be a good application.
If you are using the software interrupt as a method to dynamically link to services, a trap is the way to go, as you are really looking for a dynamic linkage, or functionally a sub routine call.
Triggering a an interrupt to be processed on another "thread" would be of no use at all in this context, so we are not really comparing apples to apples here.
Which is why I said:
Not sure why you think traps are "wrong" and software interrupts are "right".
In the coldfire, traps and swi interrupts are both considered exceptions, though of course the behavior is different.
The TRAP is more in line with the general definition of a SWI:
Software interrupt is an interrupt generated within a processor by executing an instruction. Software interrupts are often used to implement system calls because they implement a subroutine call with a CPU ring level change.
Technically using the "INTC Force Interrupt Register (INTC_FRC)" is software causing a hardware interrupt.
I would not speculate as to what to OP intended, but I think now the difference is clear.