Да, есть разница. Когда вы перехватываете исключение, .NET предполагает, что вы собираетесь каким-то образом его обработать, стек разматывается до функции, выполняющей перехват.
Если вы не поймаете это, то в итоге вы получите необработанное исключение, которое вызовет какую-то диагностику (например, отладчик или регистратор исключений), будет доступен полный стек и его состояние в фактической точке отказа. для осмотра.
Таким образом, если вы поймаете, а затем снова сгенерируете исключение, которое не обрабатывается в другом месте, вы лишите диагностический инструмент действительно полезной информации о том, что на самом деле произошло.