${JAIL} is not getting expanded in the argument to grep because it's in single quotes. You could switch the single quotes to double quotes (and change \$ to just $), but that's kind of fragile. A more robust solution would be to do this entirely with globbing and bash arrays:
shopt -s nullglob
BACKUP_FILES=( "${POOL_PATH}/backup/${JAIL}/${JAIL}"*.tar.gz )
NUM_BACKUPS=${#BACKUP_FILES[@]}
You need nullglob to handle the case where the glob doesn't match any files. Without nullglob, you'd end up with NUM_BACKUPS set to 1 if you didn't have any files.
Note that the glob special characters (* in your case) have to be outside the double quotes in order to expand. But you want to keep double quotes around the variables in case they contain any whitespace.