Básicamente, no hay ninguna razón.
Los objetos de excepción viven en su propio espacio de memoria †, por lo que no tiene que preocuparse por detectar excepciones creadas en expresiones temporales.
Todo lo que está haciendo es prometer que no modificará el objeto de excepción, pero dado que los objetos de excepción deberían tener una interfaz inmutable ‡ , realmente no hay nada práctico aquí.
Sin embargo, puede que te haga sentir cálido y acogedor cuando lo leas, ¡así es para mí!
† Tienen su propia pila local de subprocesos especial.
‡ Descargo de responsabilidad: Boost.Exception rompe esto para hacer cosas divertidas y agregar detalles de excepción, después de la construcción. ¡Pero esto es hacker!