Oh sorry, I totally forgot to check the alternatives section.
String(format:) seems like an odd comparison. It's quite a niche API in Swift (unlike its counterparts in C and ObjC, where format-based string creation is the norm).
More generally, initializer overloads feel overused and hard to discover. URL already has 18 documented initializers, and even more privateish undocumented ones (go in a repl, type URL.init and press tab).
They also compose poorly in fluent-style method chains, though I guess that's less relevant here, where a template is less likely to be used in that style.