It’s moronic to use a private method that may change in a minor update. If anyone is using private APIs - they should work on their development skills.
Of course Apple is going to use private methods to implement public APIs. Would it be more sound architecturally if they made all of their public APIs thousands of lines of code and copy and paste duplicated functionality so they wouldn’t use private functions?
The risk isn’t just to you. Apple has been able to get customers to upgrade their operating system at a cadence that no other platform vendor has. What happens if every time they release an operating system apps break because they use private APIs? Either they will have to take the Windows strategy of putting individual hacks to keep apps from breaking or they will just have to let them break? Microsoft has historically not been able to ship OS upgrades on time partially because of the backwards compatible bloat of Windows.
Apple has successfully done multiple platform transitions by completely changing the underlying code for public interfaces. They wouldn’t have been able to do that if developers were using private methods.
In the grand scheme of things, you as a developer aren’t and shouldn’t be Apple’s focus. The customer is. If Apple is able to keep the customer happy developers will come along.