Cause structure can be like
Object > QuestionGroups > Questions
Here is the most delicate part. As i remember, question_group_id is for economy on few queries.
But as i think now, more readable variant is to stay assignment table/model as in your version, and make question group model with polymorphic fields. Cause one question group can be attached to one survey, but can access to many questions.