tl;dr: The metadata to do this is already being compiled in; there just aren't any public APIs to access it.
If you have a copy of Swift master (or maybe a snapshot) installed, try this: Copy your CodingKeys sample to the clipboard, then run the command pbpaste | path/to/swiftc -emit-ir - | pbcopy (replacing the "path/to/swiftc"), and then paste the resulting code into an editor.
What you're looking at is the LLVM IR for that code—a sort of pseudo-assembly language form where most of the Swift-specific processing has already happened. After a brief header, it starts off by declaring a ton of constants. Somewhere around line 34, you'll see these two lines:
@0 = private unnamed_addr constant [12 x i8] c"defaultName\00"
@1 = private unnamed_addr constant [16 x i8] c"some-other-name\00"
These are the string values of those enum cases; as you might expect, you don't see nonDefaultName there. But keep looking. Further down, around line 112, you'll see something like this:
@10 = private constant [12 x i8] c"defaultName\00", section "__TEXT,__swift5_reflstr, regular, no_dead_strip"
@11 = private constant [15 x i8] c"nonDefaultName\00", section "__TEXT,__swift5_reflstr, regular, no_dead_strip"
@"$S4main10CodingKeysOMF" = internal constant { i32, i32, i16, i16, i32, i32, i32, i32, i32, i32, i32 } { i32 trunc (i64 sub (i64 ptrtoint (<{ [1 x i8], i32, i8 }>* @"symbolic \01____ 4main10CodingKeysO" to i64), i64 ptrtoint ({ i32, i32, i16, i16, i32, i32, i32, i32, i32, i32, i32 }* @"$S4main10CodingKeysOMF" to i64)) to i32), i32 0, i16 2, i16 12, i32 2, i32 0, i32 0, i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @10 to i64), i64 ptrtoint (i32* getelementptr inbounds ({ i32, i32, i16, i16, i32, i32, i32, i32, i32, i32, i32 }, { i32, i32, i16, i16, i32, i32, i32, i32, i32, i32, i32 }* @"$S4main10CodingKeysOMF", i32 0, i32 7) to i64)) to i32), i32 0, i32 0, i32 trunc (i64 sub (i64 ptrtoint ([15 x i8]* @11 to i64), i64 ptrtoint (i32* getelementptr inbounds ({ i32, i32, i16, i16, i32, i32, i32, i32, i32, i32, i32 }, { i32, i32, i16, i16, i32, i32, i32, i32, i32, i32, i32 }* @"$S4main10CodingKeysOMF", i32 0, i32 10) to i64)) to i32) }, section "__TEXT,__swift5_fieldmd, regular, no_dead_strip", align 4
Here we see both cases mentioned by their names instead of their string values. The next line puts them (referred to as @10 and @11; I promise they're somewhere in that monster line) into a complicated data structure, which is assigned to a symbol named $S4main10CodingKeysOMF. If you run that name through swift demangle, it will say:
$S4main10CodingKeysOMF ---> reflection metadata field descriptor main.CodingKeys
So in the master branch, information about the cases of the CodingKeys enum is already being generated by the Swift complier and packaged alongside your executable code. There aren't any public APIs to access it yet, but we could add them in any future version. (It's out of scope for Swift 5, though—it's not critical for ABI stability.)
If you're impatient, though, you don't have to wait for someone else to design something. The reflection format's documentation seems to be out of date, but you could dig into the code, figure out how to parse it, and write a library to expose this metadata. It wouldn't be easy to build, of course, but it's definitely possible—and it might even turn into an evolution proposal one day.
Hope this helps!