Extensible FizzBuzz in Ruby
#n_primes

Ruby has the Prime class as part of its stdlib, so you don't need to roll your own prime number generator.
n_primes(word_array.length + 1)[1..-1]

A more Rubyesque version might use drop(1) instead of the [1..-1] slice.
words = {} + primes.each_with_index

Instead of creating an empty Hash and then adding elements to it, you can use Array#zip to create an array of word/number pairs. You can turn that into a hash with Hash[], if you'd like.
words.reject

Purely from a semantic standpoint, I think select would be more natural to use. I think of it as "finding the words to print" rather than "discarding the words that shouldn't be printed" which sounds like a double negative.

You could also consider using #inject or #each_with_object to collect matches instead of #reject + #values
to_print.length == 0

Use Array#empty? instead.
to_print.join ''

You don't need the argument for Array#join.


I'd do this:

require "prime"

puts "Enter the words you would like to use (separated by spaces)"
words = gets.strip.split

puts "Enter the number to count up to"
count = gets.strip.to_i

pairs = Prime.first(words.count + 1).drop(1).zip(words)

1.upto(count) do |n|
  line = pairs.each_with_object([]) do |(prime, word), memo|
    memo &lt;&lt; word if (n % prime).zero?
  end
  puts line.empty? ? n : line.join
end


Or, more in line with yours, the last part could be:

1.upto(count) do |n|
  line = pairs.select { |prime, _| (n % prime).zero? }.map(&amp;:last)
  puts line.empty? ? n : line.join
end