I think validation of the script itself should remain when the script is about to be invoked. Since the script is external, it can come and go after puppet has started which makes a startup check useless.
I think it would be ok to validate that the parameter is a fully qualified path at puppet start, but validation that the script exists should be performed when the script is called.