I want to encourage users to add comments but all the questions show up on one page so having all the comment boxes visible takes up too much vertical space. Is it good UX to show them on clicking a toggle button or is there a better way?
Showing many text areas for every single question could add too much friction. Showing many toggles is less friction but still more friction than not showing anything at all until required.
I would suggest that you automatically show the comment text area only for the question currently being answered. Just make sure the place to comment doesn't demand attention and is clearly optional.
Something like this would inform the user that longer answers are welcome, but you would want to do a better job than I have done in the image below; formatting the link and the "optional" tag so that they are obviously related. As my example stands, some might think that the question is optional, which isn't good.
You could limit the first type of entry (age for example should be a max 3 digits and maybe a dropdown) keeping a lot of space on the same line. Aside the answer you could have a single line entry field with "add comment" or "elaborate" already written inside it. (Think of Facebook's "what's on your mind".)