Вызов Mage::throwExceptionиспользуется для выдачи исключений определенного Mage_Core_Exceptionсорта. Они обычно используются для представления сообщений об ошибках конечному пользователю. Для примеров этого, сделайте быстрый поиск Mage::throwExceptionв модуле Mage_Checkout, вы найдете много случаев, когда сообщение об ошибке фактически транслируется перед его выбросом, так как в конечном итоге оно будет добавлено к объекту сеанса и отображено пользователю на итоговая страница.
Использование new Exceptionили что-то подобное, как new My_Custom_Exceptionправило, происходит там, где вы генерируете внутренние ошибки приложения, ошибки, которые, скорее всего, никогда не должны отображаться конечному пользователю. Может быть, вы ловите их и обрабатываете их изящно (в некоторых случаях полезно для пользовательского типа исключения), или в других случаях они заканчиваются перехватом, записываются в журнал и завершают запрос с отображением пользователю более общего сообщения об ошибке.
Я никогда не использовал Mage::exceptionего лично, но, похоже, это попытка создать уникальный тип исключения для каждого модуля. При его использовании не было бы никакого вреда, поскольку по сути это фабрика, которая возвращает экземпляр исключения для данного модуля, хотя (на момент написания этой статьи) она не реализовала никакой поддержки для таких вещей, как переопределения.