FWTW, I'm fairly confident that applying the UNOSAT standards for "destroyed" the 90% claim is almost certainly false. UNOSAT rated most of the buildings affected as "moderately" or "severely damaged" instead.
I'm not 100% that OHCHR only relied on this UNOSAT data, but it was probably a sizeable part of their source, since they've not been given ground access for inspections etc.
Here's what UNOSTAT said:
This map illustrates a satellite imagery based damage analysis within an area of interest (AOI) in the residential area of Mariupol City, Ukraine.
Based on imagery collected on 7, 8, 12 May 2022 and 14 March 2022, and 21 June 2021, analysts found that 5,647 structures sustained visible damage in the AOI. This represents approximately 32% of the structures. Out of these, 315 are destroyed, 2,132 severely damaged, 3,002 moderately damaged and 194 possibly damaged. Compared to the 14 March 2022 analysis, 5% of previously affected buildings sustained additional damage, and the total damage has increased by 28%, with 4,910 new damaged buildings. While no complete count of buildings for Mariupol is available, an open source dataset, which is visibly incomplete indicates at least 17,568 structures in the area.
This analysis is based on structures visibly damaged as of 12, 8, 7 May 2022 and 14 March 2022 as seen in marginally degraded satellite imagery. This is a preliminary analysis and has not yet been validated in the field.
This analysis is not particular to apartment blocks though. However I strongly suspect that UNOSAT would similarly not count an apartment building with some destroyed flats as entirely destroyed.
I've done some further digging to see if the UNOSAT standards are particularly high, but according to one seminar (by the International Working Group on Satellite-based Emergency Mapping (IWG-SEM)) it looks like other satellite-image assessors use similar standards, at least far as having similar categories:
But there are also some caveats:
The analyses of the quality metrics (Overall, User and Producer accuracy) highlighted that distinguishing among different grades of damage leads to low per-class accuracies, especially for the lower damage grades. [...]
A crucial point is also the need to make the users aware that building flagged as “No visible damage” may anyway
have suffered damages that can’t be assessed from vertical satellite imagery (i.e. from no to slight structural
It's not clear to me if UNOSAT itself uses this particular (numeric) standard, but according to that seminar "Destroyed" status is:
assigned to structures that are total or largely collapsed (>50%).
And as example they provide this:
Whereas a partially collapsed roof (<50%) only counts as a damaged building:
As an obvious comment: if this also the standard that UNOSAT uses, apartment blocks are thus much less likely to be counted as destroyed. The larger buildings are less likely to suffer >50% roof damage from a single hit.
Oh, and if this UNESCO publication ("Five years of conflict: the state of cultural heritage in the Ancient City of Aleppo") is relevant, (p.26) UNOSAT might use an 80% (not 50%) destruction threshold. (The same page mentions UNOSAT-UNITAR.) Applying that threshold, even the Mariupol theatre might not count as destroyed. (From the same page/source, the threshold for "severe" damage is 40%, the one for "moderate" is just 5%.)