This has nothing to do specifically with Text or LocalizedStringKey; it is a general applicable aspect of the Swift language that applies to any type expressible by any literal.
It is important to understand that an integer literal is not an Int and a string literal is not a String. When a type conforms to an ExpressibleBy* protocol (such as ExpressibleByIntegerLiteral or ExpressibleByStringInterpolation), it gets to initialize a value from that literal in any way it chooses.
This is why, even though the default integer literal type is Int, a type such as Double can be initialized from an integer literal larger than Int.max: Double handles initialization from the literal directly which is at no point represented as an Int value.
Similarly, even though the default dictionary literal type is Dictionary, which requires unique keys, KeyValuePairs and other types that conform to ExpressibleByDictionaryLiteral need have no such limitation: again, they handle initialization from the literal directly which is at no point represented as a Dictionary value.
In Swift, if the context in which you write a literal expression demands a non-default literal type, then you can just write the bare literal:
func f(_: KeyValuePairs<Int, String>) { ... }
// Fine, because the argument isn't (ever) and can never be a `Dictionary`:
f([42: "Hello", 42: "World"])
// Not fine at all, because `x` is a `Dictionary`:
let x = [42: "Hello", 42: "World"]
// f(x)
let y = [21: "Hello", 42: "World"]
// Not fine even if you fix the duplicate keys,
// because there is no `f` that takes a `Dictionary`:
f(y)
In the absence of context, to initialize a value of non-default literal type from a literal, there were originally two spellings available:
let a: Double = 9223372036854775808
let a = 9223372036854775808 as Double
However, no matter how many times we taught users otherwise, they'd write the following instead:
let a = Double(9223372036854775808)
Until SE-0213, what this actually meant was: create a value of type Int, then convert the value to Double. As a result, it wouldn't compile because 9223372036854775808 > Int.max, and folks would be confused. So, we changed the language to match user expectations. Now, the last code block above is another way of expressing 9223372036854775808 as Double.
After SE-0213, we still needed to preserve a spelling to opt into calling the actual initializer (for example, to convert from Int to Double), so to do so we now require writing out .init. That way, if you explicitly want to convert Double from an Int value initialized from a literal, you can write:
let b = Double.init(42) // equivalent to:
let b = Double(42 as Int)