The function you present is not a workaround, it's the right way to do this.
Still, it sounds like it might be useful for run-hooks to properly handle functions whose arity is less than the expected arity. Does anyone foresee any issues with that?