Use a subshell to delay the evaluation of $EPOCHREALTIME. This way, it will be evaluated each time the trap is triggered.
trap 'PS1_STARTTIME=$(echo $EPOCHREALTIME)' DEBUG
export PS1="\$(printf '%0.3f' \$(bc <<< \"\$EPOCHREALTIME - \$PS1_STARTTIME\")) \w \\$ "