I've looked into this a few months ago, and this is what I found:
The problem is that AbstractBuild queries (in that order) EnvironmentContributors, SCM, BuildWrapper.Environments and EnvironmentContributingActions to incrementally build the set of environment variables while a build is started.
SubversionSCM (an SCM) looks for matching entries in the URL -> Revision map during this variable resolution. If so, they are added as SVN_URL_x and SVN_REVISION_x. Why not just add everything? My guess is externals (while listed for a build, only explicitly defined locations have corresponding variables).
Due to the order of resolution, Env-Injected variables are not yet defined. This leads to a warning in the log of the form:
Afterwards, when the URLs are getting checked out, the variables have already been defined, therefore that works.
SVN_URL and SVN_REVISION are missing also when "Advanced Project Options -> Use custom workspace" is set by variable.