В принципе, нет никаких причин.
Объекты-исключения живут в собственном пространстве памяти † поэтому вам не нужно беспокоиться о перехвате исключений, созданных во временных выражениях.
Все, что вы делаете, - это обещание, что вы не будете изменять объект исключения, но поскольку объекты исключения должны иметь неизменяемый интерфейс ‡ , на самом деле здесь нет ничего практичного.
Однако, когда вы ее читаете, вам может стать тепло и уютно - вот как это для меня!
† У них есть свой собственный, специальный стек, локальный для потока.
‡ Отказ от ответственности: Boost.Exception нарушает это, чтобы делать забавные вещи и добавлять детали исключения после создания. Но это же хакерство!