Since macros are only additive, can use peer macros instead on the cases to hold the desired values.
Idea:
// declaration
@attached(peer)
public macro EnumCaseValues(_ cases: String...) = #externalMacro(module: "ManyToOneMacros", type: "EnumCaseValues")
// usage
@ManyToOne
enum MyEnum: String {
@EnumCaseValues("New York", "NYC")
case newYork
@EnumCaseValues("SLC")
case saltLakeCity = "Salt Lake City"
}