rocketnia had a nice comparison of extend with defgeneric in the original thread: http://arclanguage.org/item?id=11779. aw chimed in as well: "If there's a facility that does what you need, use it, but if there isn't, use 'extend ^_^" :)
(Thanks for the pointer to coerce, rocketnia)
My experience since then has been that the efficiency of a hash-table lookup is irrelevant. But I really like the conciseness and readability of being able to say:
(defmethod foo(arg1 arg2) type-of-arg1
"you have something in arc.arc which throws me redefinition messages whenever I start up arc"