It's not that no one sees it as a problem (one way another, this issue keeps coming up on forums.swift.org), but that the Swift team is still some way away from providing a solution.
So, for informational purposes, let's tease this apart:
The situation has changed a bit since the thread you linked to. At that time, arrays and dictionaries declared conformance with Codable, but failed at run time if their contents weren't Codable. In the current version of Swift, it's possible to have conditional conformance, since the idea of "this collection is Codable if the types of its elements are Codable" can now be expressed at compile time.
Your Foo typealias isn't really necessary, because "Any & Decodable" is basically the same thing as just "Decodable". It doesn't work in decode([String: Decodable].self, from: data) because in Swift, protocols don't conform to themselves, for technical reasons. For now, what you would need instead is a "type-erased type" that conforms to Decodable. Swift defines a number of these type-erased type (such as AnyHashable, conforming to the protocol Hashable), but there isn't one for Decodable.
What you do about this depends on the nature of your JSON data. If you know the incoming dictionary keys, and you know the JSON types of all the values at all levels, the best solution is to declare a hierarchy of custom types that individually conform to Codable, relying on synthesis of the conforming implementations so you don't have to write them yourself.
If you don't know the incoming dictionary keys in advance, or if the overall hierarchical structure isn't known in advance, then a better solution is to skip JSONDecoder, and use JSONSerialization directly. You can then test and bridge the resulting hierarchical data. This tends to involve a fair amount of grunt work, so you can look for one of the Swift JSON decoder libraries on (say) GitHub for something that does much of the work for you. (Typically, such libraries will return values of an enum with cases like .dictionary, .array, .integer, .double, .date, etc, with the actual values as associated values of the enum cases.)
If you want to work a bit harder, you can make your own type-erased AnyDecodable type. Depending on the nature of the data, this may or may not reduce the amount of glue code you would have to write for the JSONSerialization solution. I suggest you start with something like this: mikeash.com/pyblog/friday-qa-2017-12-08-type-erasure-in-swift.html