Method for gathering the correct data to a specific user
Some notes:


Use local variables for values that are used many times.
time = Time.zone.now: This local variable prevents race conditions from occurring if the day changed in the middle of the method (unlikely, but why risk it?).
All those methods you are calling on a Time object are also available on Date. This will simplify your code.
You can send the time/date as (an optional) argument so the method works for any moment of the year (also, it will be easier to test).
time.strftime("%V").to_i is ok, but there is a better way:  Date#cweek.
There are some ways to build arrays with conditional items. I like this functional pattern: values = [value1, (value2 if condition), value3].compact.


I'd write:

def questions_for_week(date: Time.zone.today)
  frequencies = questions.frequencies
  week = date.cweek
  [
    frequencies[:weekly],
    frequencies[week.odd? ? :odd_weeks : :even_weeks],
    (frequencies[:start_of_month] if week == date.beginning_of_month.cweek),
    (frequencies[:end_of_month] if week == date.end_of_month.cweek),
    (frequencies[:start_of_quarter] if week == date.beginning_of_quarter.cweek),
    (frequencies[:end_of_quarter] if week == date.end_of_quarter.cweek),
  ].compact
end