Yes, you are missing something because I didn't explain it :-)
cf-upgrade copies itself to a temporary location and then runs the upgrade process. This is required because some platforms do not let you write to executables that are being run, therefore the original cf-upgrade is copied and the copy is the one doing all the work.