Now, if any of the arguments match an entry in those arrays, something has to match the first element (recall it's grep'ing through @_), so it may as well check there first. In other words, any other element of @EXPORT_OK or @EXPORT_FAIL would have served equally well.
I don't follow that logic. Just because something in @EXPORT_OK is matched doesn't imply that everything in @EXPORT_OK is matched.