Структура данных, которую вы уже имеете, идеальна, просто проверьте пересечение:
(a1 & a2) == a1
Обновление: комментарий, обсуждающий перестановки, интересен и креативен, но совершенно неверен, поскольку разработчики Ruby предвосхитили эту проблему и указали, что порядок результата - это порядок a1. Таким образом, это работает и будет продолжать работать в будущем. (Массивы - это упорядоченные структуры данных, а не множества. Вы не можете просто переставить порядок операции с массивом.)
Мне нравится Dave Newton отвечать за хладнокровие, но этот ответ также работает, и, как и Dave's, также является основным Ruby.