Область действия with_at_least_one_comment не работает так, как вы ожидаете. Как видно из вопроса, он выберет пользователя для каждой записи в user_comments. Что приводит к дублирующим результатам, которые вы видите. При компоновке с active_users вы удалите все записи, возвращаемые with_at_least_one_comment, которые не имеют активного статуса.
Давайте начнем с упрощения проблемной именованной области видимости.
Вам не нужна лямбда, потому что нет никаких аргументов, которые нужно принять, и соединение может быть передано на аутсорсинг Active Record, которая выполняет внутреннее соединение, если дана связь.
Короче говоря, эта именованная область будет делать именно то, что вы хотите.
named_scope :with_at_least_one_comment, :joins => :user_comments,
:group => 'users.id'