Or put your script as /usr/local/bin/runsv (assuming /usr/local/bin is in your PATH ofc) so the original runsv is left untouched, which is nice (I feel), and certainly better when using a package manager.
Indeed, if runsvdir uses PATH resolution to find runsv, it's easier and better to override runsv via PATH. However, you should not assume that an executable in a package always uses PATH resolution to find other executables in the same package. To ensure reproducible behaviour and independence from the environment, it is perfectly valid for an executable to hardcode paths to its companion executables, in which case you have to replace the binary if you want to wrap it. -- Laurent