The resources are done like that so the system doesn't have to scale icons -- so you don't see fuzzy icons anywhere because they've been scaled by the CPU. See: https://developer.android.com/guide/practices/screens_suppor...
It's worth noting that the Android apps installed on your device don't typically include all those icons. There are usually a handful, if not dozens of APKs that are available for download for apps when you get them from the Play store. The gradle build tool makes it relatively trivial to produce multiple versions of the same app, based on display size, display density, target Android version, and architecture. I can have resources for three densities, three device sizes, two OS versions, and two architectures, and produce 36 APKs from my build.
Apple did a similar thing with Universal Binaries back in the day that could run on PowerPC and x86.
Apple OSX has had scaling icons for a while too. You can define your icon in SVG (Android/iOS support this now) which is infinitely scalable, but generally icons are actually multiple images and the system selects the most appropriate one: https://developer.apple.com/design/human-interface-guideline...
This is all for systems that support display scaling and multiple architectures. Windows is still catching up.