Database table data with different set of values
I think you're on the right track.

I presume questions.type (NB type might be a reserved word and cause problems) will have the check constraint check type in ('multiple_choice','free_text') or something similar.

Then all you would need to do is rename your proposed UserAnswers to UserMultipleChoiceAnswers and drop the column answer, 
and create another table, UserFreeTextAnswers with columns id, question_id, answer, user_id.