There is basically no reason at all.
Exception objects live in their own memory space† so you don't have to worry about catching exceptions created in temporary expressions.
All you're doing is promising that you won't modify the exception object, but since exception objects should have an immutable interface‡, there is really nothing practical here.
However, it might make you feel warm and cosy when you read it — that's how it is for me!
† They have their own, special, thread-local stack.
‡ Disclaimer: Boost.Exception breaks this in order to do funky stuff and add exception details, post-construction. But this is hackery!