1) В документации не сказано что `fotes_for` что-то должен выводить, кроме квадратных скобок, которые называются пустым массивом
2) насколько я вижу `fotes_for` может быть как промежуточным scope-ом так и любой другой сущностью возвращающей все что угодно
Таким образом, я не вижу здесь ни неожиданного поведения, поскольку ожидаемое поведение описано в документации плохо, ни глюков.
И мне вот не совсем понятно, вы пишите:
@booking.votes_for.voters.each
потом пишите, что book.votes_for => []
а потом пишите, что book.votes_for.voters => коллекция юзеров
В своих примерах вы к разным объектам применяете разные цепочки методов и получаете разные результаты - вполне ожидаемо.
А вы ожидали какое поведение?