@KK, why do you think it is complicated? Please consider my suggestion and see if it would work for the case.
The only tricky part is to create a valid JSON from the inputs upon submitting of the form. I think this can be done either by a JS script or PHP script. In theory, such script catches an array of inputs and traverses it to get the data to save into repeatable. OR question-answer Inputs may be named in a way to fake a bound repeatable field.
So, quiz.php is a clonable template, where each cloned page is a set of questions. Questions are represented by Mosaic. Admin can freely add any number of questions (each as a mosaic tile) per set (cloned page). Listing the questions also takes care of proper generation of the input names.
The results.php is a clonable template, where each page is a result for one user. It contains a repeatable region, which is dynamically populated via JSON, where each repeatable row is a question-answer pair. In such repeatable region, the number of rows is expected to dynamically match the number of questions in quiz.
I'd take a bite into creating such solution. In essense, it might become an example of using repeatable regions in a non-bound fashion in future.
I'd love to hear what way of solving the case you had in mind.