When you click Upload, the Arduino IDE compiles your program and tries to send it to your Teensy. Uploading can only happen automatically if your Teensy is running a previously loaded program which hears the USB communication. A tiny part of the code Arduino compiles into your program listens for a request to go into programming mode, so Teensy Loader can send the new program.
If your code turns off USB, or goes into a deep sleep mode without USB wakeup, or leaves interrupts disabled, normal USB communication can't work. Without a way to manually get into programming mode, such programs could brick your board. The Program button on your Teensy is meant to give you a way to recover from putting those sorts of not-normal-USB programs onto your Teensy.