For this use-case P2SH is not suitable because the signatures are obfuscated by the hashing of the script. P2SH only becomes suitable if the original script is known the the two parties signing the inputs. Or have I misunderstood something, for example the full script would have to be know to them to sign the transaction inputs?
So give the user a copy of the script along with the unsigned transaction. Almost all PkScripts can be converted into a P2SH output. The only significant limitation is that P2SH are limited to 520 bytes because pushes to the stack of more than 520 bytes are not valid. The bad news is we likely will have that limitation for a while as changing it would require a hard fork.