This isn't true.
It's totally possible to initialise any non isolated type in any isolation context. That type can conform to any non isolated protocol (such as Codable, Hashable, Equatable, Sequence and many 100s of others). With a tiny bit of boilerplate (actor isolated wrapper) you can transfer that instance across an isolation context today. And in the near future that will be made simpler.
The fact is, a non isolated class with mutable members isn't thread safe. Marking a couple of members with @MainActor
doesn't make it so. In fact, it just fragments its members across isolation domains and forces your asynchronous work back to the main thread – which is surely the situation you were trying to avoid by initialising it asynchronously in the first place.
EDIT: Turns out the near future is closer than I thought. It's available in Swift 6.