Закрываю вопрос, я заменил в модели User
has_and_belongs_to_many :groups
на
has_and_belongs_to_many :user_groups, class_name: 'Group'
И теперь все работает должным образом:
User.find(id).user_groups #=> #<ActiveRecord::Associations::CollectionProxy [...groups...]>
Проблема решена.
Возможно конфликтовало из-за самого слова groups, потому что есть вот это
https://apidock.com/rails/Rails/groups/class, но я не уверен на 100%