On what device did you test this? The bug is only relevant on iPhones with notch, i.e. without a home button. I should have clarified that, sorry. The following numbers are from an iPhone 12 emulator, with iOS 14.3.
So the behavior is interesting. When the app starts with the UITableViewController as initial view controller, I also get 0 all around for the safe area insets:
At load:
at load UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)
after transform UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)
layout changed UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)
after rotation: no output, viewLayoutMarginsDidChange is not called.
However, if I push to another view controller and then return, upon return:
layout changed UIEdgeInsets(top: 143.0, left: 0.0, bottom: 34.0, right: 0.0)
after rotation: again, no output
I just double checked this on a real device (iPhone XS) and get the same results.