Still I can imagine that it uses slightly more memory...
AFAIK, Android caches things in terms of the JVM/ART using Zygote, but macOS and iOS are designed to run native code, so they cache the actual dynamic libraries themselves (it's called the "dyld shared cache"). Things like libc, some core frameworks and so on go in there.
Keep in mind this happens across the entire OS, since the Android user experience is implemented largely in terms of high level JVM/ART objects with all of their associated heap overhead, but iOS and macOS and their apps are mainly implemented in C/C++, Swift, Objective-C, which at most use reference counting, and only for objects that need to be reference counted. This is absolutely not the cause of all memory issues but this is sort of the base level foundational stuff of both platforms and has implications for the higher levels.
Even though Android is based on Linux and iOS/macOS are based on Unix and BSD, and those two/three platforms are quite similar conceptually, they have very different userlands.
It seems like iOS and macOS do more with less ram. Why is that?
My outdated view on this is that iOS apps are native vs Android that runs JVM apps. Is that even true still?