Step through multiple arrays in parallel with FOREACH
While FOREACH is very convenient to loop through a single array, it's not particularly useful to step through multiple arrays in parallel. Use a plain FOR loop with array_lower() / array_upper() instead:

FOR i IN 1 .. array_upper(UserResponseList, 1)
LOOP
   RAISE NOTICE '%, %, %', QuestionList[i], UserResponseID_List[i], UserResponseList[i];
END LOOP;


Since you created the array in the function, we know the index starts with 1 (default). Else, use:

FOR i IN array_lower(UserResponseList, 1) .. array_upper(UserResponseList, 1)


The index i is defined automatically, the documentation:


  The variable name is automatically defined as type integer and exists
  only inside the loop.


Related cases with more information:


Postgres - array for loop
To ignore result in BEFORE TRIGGER of PostgreSQL?