If you run help exec on a shell, you'll find out what's the problem:
exec: exec [-cl] [-a name] [command [argument ...]] [redirection ...]
Replace the shell with the given command.
So the script stops as soon as rfkill unblock wifi is spawned. Rfkill then exits after unblocking wifi, but the shell isn't there anymore to read sv down unblock_wifi. Since runit always restarts the service after the process it's monitoring exits, the script is spawned again, and the cycle repeats.
You'd want to write it like this:
#!/bin/sh
rfkill unblock wifi
# pause literally does nothing, it doesn't even exit.
# It's there so runit doesn't start the service again.
exec pause