Они кажется концептуально сложнее, чем throw/catch.
Видимо, это очень субъективно, но рестарты мне куда понятнее чем throw/catch: там прямо в коде написано, что произойдет в каждом случае [из описаных], а в throw/catch не написано. Вдобавок еще там широкий extent — я это имел в виду, когда сказал «две формы»: они могут быть в разных местах, throw м.б. лексически не виден из catch.
Широкий extent это иногда полезно, я и сам иногда пишу весьма динамически действующие макросы, но ошибки это по-моему не то место, где оно того стоит, и от использования handler-bind
ничего не теряется, а только приобретается. Так что не вижу смысла в catch/throw.