Hi Russell,
Your understanding is correct. There really isn't a way around this at the moment. The system analyzes the code on start up to determine what may need to be authorized. If you are fetching and executing scripts stored in Drive, the system can't know what permissions are required before execution.
The workaround is what you mentioned. You technically don't need to have it in the code though. You can have comments that list the apps required. Something like:
// Following comment ensures UrlFetchApp authorization will be prompted:
// UrlFetchApp.fetch()
I know it's not perfect, but perhaps that's a bit preferable to having dead code saved just to force authorization.
Cheers,
Alex