This should be doable by simply adding input fields connected to fields on the profile while creating the landing page.
The major caveat though is that you only seem to be able to store stuff directly under the profile. So you would have to create a "Unsubscription reason" string field (or multiple flags/booleans in the case of checkboxes) in your profile custom resource that you connect your inputs on the landing page to.
This means more complex surveys would potentially cause issues as your profile would be cluttered. I've seen cases where "generic" survey response fields on the profile have been used, and then a workflow running at set intervals extracts the values from the profile and stores in another resource. Not a very nice solution though.
I have the same issue and i have done the same thing , created check boxes and extended fields in profile resource. and connected the fields in landing page . But the responses are not getting stored in acs rather its showing error page to me . So what could be the possible reason for this ? Please help .