The problem is in ProcessMessageReceiver.generateEvent(). If the message is sent via routeMessage() (which is the default behavior), the ExceptionPayload is not set on the response message. Setting allowGlobalDispatcher = true will use MuleClient.send() instead, which does set the ExceptionPayload and makes the test case pass. However, this leads to a concurrency issue under high load which makes the Loanbroker BPM test case fail.
If the concurrency error could be fixed, then I would just remove the routeMessage() and make the send() behavior the default. Maybe we'll get lucky and this will just go away after some of the 3.0 cleanup.