I just tested this.
It seems to only run once for me.
./certbot-auto renew --pre-hook "echo 'pre-hook'" --post-hook "echo 'post-hook'"
Cert is due for renewal, auto-renewing...
Running pre-hook command: echo 'pre-hook'
...
Pre-hook command already run, skipping: echo 'pre-hook'
...
You may need to upgrade your version of certbot. This functionality may have been an improvement in a release newer than yours.