It’s not clear to me that it’s terrible advice to have separation of a type’s public API from private implementation details. Many types in Foundation, for instance, have naturally gravitated to that style anyway.
The point about stored properties in same-file extensions applies to this situation, particularly when you don’t want to separate the public and private parts. It would allow you to declare a type and place its entire implementation, public and otherwise, in a private extension. (The intended design where extensions enforce maximum visibility was never entirely implemented, so that’s no longer a part of the design.)
public(get) has been pitched for other reasons here, but one reason I was delighted to see it (though I’ve never said it out loud) is that it addresses this issue.