nCrunch looked good, and I know xUnit is fine with it.

They are setup for showing any sort of exception, because often tests fail because of a null reference exception, or some other sort of exception. Any sort of exception has to be readable.

I don't beleive any runner does anything special with their assert exception types, they are just custom exceptions which the framework throws.

Also frameworks like shouldly would throw their own custom exceptions