I really don't like this approach and that's why many companies suffer with over-managemwnt and inadequate leadership in teams. That leads to too many people dealing with problems and becoming very inefficient. It assumes engineers are marely coders and not capable of making decisions and delivering on their job (which might be true).
I saw very similar setup (mostly in massive corporations) at least a few times and they all had similar problems. This is the first thing we were tearing down to improve output and happiness in teams
Managers become just a type of glorified scrum master and might and their responsibilities are close to nothing. I'm sure removing them would do little to zero harm to the team, or even improve things.
Although, I would never replicate such approach in any team I build and as I said earlier, that's the first thing I would drop if I join new company and my role was to fix things... I agree with cross-functional approach and it's good to have principal/lead engineer, designer and product person overlooking the group. Also, good the individual teams are kept small. I found the magic number for the best agile team size is around 4-5 (engineers and designer, no scrum masters managers, they are not needed at this level).
If you tell me this works very well for you, I have a feeling that's thanks to something else you do, not the team structure itself. 😉