Was all this engineered and then implemented, or did they play it by ear? Seems very complex for the time. Now with Pis and ESP32s one can just cobble up together whatever Frankenstein with off the shelf parts, but this seems very elegant with bespoke chips, sans 68000. This is way way way over my head, but intellectually intriguing.
Most of it was architected before implementation, The timing was a pretty core part of the system, I believe the intention was to give every machine some fast RAM that had a CPU only bus, but that fell to budget demands. You could still get a memory expansion which the CPU would have all to itself. There were a few details that were late tweaks, and there were a whole bunch more that could have been easy additions at implementation time if they had known at the time what we knew after 20 years worth of demo coding on the Amiga.
A lot of the features of the Amiga came from exactly that form of hindsight with the 8 bit machines. The Copper, sprites being arbitrary height, and display addresses being 'live' rather than top-of-frame initialisation values came from seeing programmers of the 8-bit machines finding tricks to undo much of the fixed function behaviour so they could reuse sprites or trick the display RAM fetch to suddenly jump to another place. The Amiga came with a lot of that automatic behaviour removed and then performed by the copper allowing for low level coders to just access the core behaviour instead of trying to trick the hardware into doing it (like the way you remove borders on the c64)