set -u será abortado exatamente como você descreve se você referenciar uma variável que não tenha sido definida. Você está invocando seu script sem argumentos, portanto, get_percent está sendo invocado sem argumentos, fazendo com que $1 seja cancelado.
Verifique isso antes de invocar sua função ou use expansões padrão ( ${1-default} expandirá para default , se ainda não estiver definido para outra coisa).