Using a recursive IsTrusted call here could run out of stack space if there are a lot of transactions depending on each other in the wallet.
I don't think this is very likely, but when they happen stack overflows are nasty and hard to debug.
It was avoided with the workqueue-based approach.