Yes, if the target table existed in multiple schemas then you would have multiple column names returned in the cursor. I all the tables in the multiple schemas were identical, you would not have an issue, just that the query would run multiple times over the duplicate column names in the target table. If they were different, then you would have a problem. The target table also would be in the default schema for the user running the code.
I have written a lot of dynamic SQL and this was a fairly easy question to answer. What I was looking for was perhaps a missing OUTPUT, either in the definition of the parameter string or in the invokatiion of the sp_executesql itself.
I agree, one should always specify the schema of the table. Also, I wouldn't use INFORMATION_SCHEMA views, I would use the system views themselves (sys.tables, sys.columns, etc.).