It was missing virtual memory, so the expectation of being able to run an unlimited number of programs similarly to a desktop experience, was impossible. Of course that was a decision of their own making, but it still takes time to undo such low level expectations, especially when you work at Apple's scale.
AFAIK the M1 series iPad Pro and later (so basically everything able to run stage manager) can support virtual RAM, which is why they are able to make it work, when they couldn't before. Or maybe they were able to enable virtual ram for all devices, I'm not sure.
But there were in fact reasons... of a sort.
This is the best comment of the thread so far. Non-engineers insult Federighi as some liar who was just trying to justify not doing what you wanted him to do. The A-series chips were designed for phones where people never ran more than one app at a time. All the way up to the M1 iPad Pro, iPads ran those phone chips. Non-engineers do not think about virtual memory and what it does. It’s ubiquitous for desktop OS’es that virtual memory is used, but phones don’t need it.
For those who don’t know what virtual memory is, it’s a way for the OS to swap apps or processes in and out of memory so that the amount of memory looks a lot bigger than it actually is, which allows many apps to run at the same time. Non-active memory is stored on the hard drive/SSD. The system would then swap processes in and out of real memory, reading the swap file on the drive and moving that into active memory while storing the swapped out process onto the drive. It happens so fast that a person can’t tell the apps aren’t actually running at the same time. Without virtual memory, this can’t be easily done and have it perform up to the instantaneous expections of iPadOS because you’re limited to only RAM.
A lot of older iPads had 4-6GB of RAM, a pathetic amount for a desktop OS but more than enough for single-tasking OS’es. Without virtual memory, it was impossible to run multiple apps simultaneously and have them actually not lag like crazy. With virtual memory now enabled by M-series processors, multiple apps are suddenly possible. They somehow got Stage Manager to work on a 2018 iPad Pro, but it had its limitations since they didn’t have true virtual memory. They probably implemented a virtual memory controller completely in software. The speed of the drive also matters with regards to virtual memory. A slow 400Mbps drive probably doesn’t work so well compared to a lightning fast SSD running at 2Gbps or faster.
With the oldest chip in the lineup at an A16, their software-based virtual memory controller probably finally performs fast enough to implement the full windowing system across the lineup. Even then there are still limitations of 4-12 apps at once depending on processor.
I’ve seen many people say the hardware is the same as a MacBook, so why can’t it run like macOS and allow unlimited processes? The easy answer is battery. Even the biggest iPad battery is still small compared to the smallest Mac battery. I’ve run the same tasks on my iPad and on my MacBook Pro over the same time period and see dramatic differences. While my iPad will still have 70% battery life after a couple hours of hard use, my MacBook Pro will be down to 20% or less. And this is with a smaller battery by far. That’s because iPadOS was written from the ground up for preserving battery life while macOS isn’t. Allow unlimited processes on an iPad, including background processes, and that 70% becomes 0% compared to the MacBook Pro.
Apple continues to preserve battery life by putting limitations on how things perform on an iPad while loosening up these limitations on the Macs with bigger batteries. Imagine if you could put iPadOS on a 16” MacBook Pro. That machine would probably run for a 1-2 days continuously instead of the 7-10 hours you would normally expect. This is a reason Apple requires apps to request background processes rather than doing it automatically for all processes. That means apps like Final Cut Pro still can’t do background rendering until it’s updated to do so. I am curious if a background process could include audio output to create multiple audio playing at the same time. Having not looked at the new APIs, I don’t know. I tested the Music app, which plays in the background just fine with another app in the forefront, but the audio still cuts off if I play sound on a different app in the foreground. Either it’s still not allowed or Apple didn’t update Music to do it.