Portability is the key for me, because I tend to switch things around a lot. Containers generally isolate the persistent data from the runtime really well.
Docker is not the only, or even the best way IMO to run containers. If I was providing services for customers, I would definetly build most container images daily in some automated way. Well, I do it already for quite a few.
The mess is only a mess if you don’t really understand what you’re doing, same goes for traditional services.
Flashing the stock Pixel ROM back is just as simple as flashing GrapheneOS, the instructions in GOS website are very good for both.
The only two things I can think of that might be issues are banking apps and Google Pay, if you use that. I use Play services in the main profile and honestly there’s not much difference to the stock ROM in terms of user experience. Even Android Auto works nowadays.
For the banking apps, you can have a look at https://privsec.dev/posts/android/banking-applications-compatibility-with-grapheneos/. Just note that if your bank is not on the list, it doesn’t necessarily mean it wont work.