&>> is correct syntax in the bash shell to redirect both the standard output stream and the standard error stream to a file in append mode.
What I think may be happening is that you run the script using sh, which on your system is not bash. Or, you are running a bash older than release 4.0, which is the first release that supported &>>.
The other way to do this, which is standard compliant, is to use >>file 2>&1. In your case,
nohup "$@" >>"$nohup_file" 2>&1
There is no shorter way to do this in a standard compliant sh shell.
Note that what you suggest, 2>&1 >>file, is back to front and would not send the standard error stream to the file but to wherever the standard output stream originally went. Redirections are handled in a left-to-right manner, so your redirection would first send standard error to wherever standard output goes, and then redirect standard output to the file in append mode. In other words: the second redirection, >>file would not change where standard error goes, so it goes where standard output originally went due to the preceding 2>&1.
An alternative way to write your code would be
nohup_ntrs () {
nohup_file="$HOME/teros/nohup/stdio.log"
mkdir -p "$(dirname "$nohup_file")"
{
printf ' ------------- BEGIN %s -------------- \n' "$(date)"
nohup "$@"
printf ' ------------- END %s ---------------- \n' "$(date)"
} >>"$nohup_file" 2>&1
}
This reduces the number of redirections to a single one by grouping the commands whose output should be redirected in curly braces and redirecting that compound command as a whole.