Вы можете сделать что-то вроде этого:
users = User.all
users.each_with_index do |u, i|
csv << ...
end
и затем использовать индекс, чтобы узнать, когда пора переключаться на новый файл.
(i % 1000) == 0 #Open new file
(i % 1000) == 999 #Close existing file