However, separate teams for product and design easily leads to the organisational antipattern where every feature implemented has to go through handoff between multiple teams. First product teams decide what to do, then design teams design it and hand off to UX for testing and later hand off to dev with full specification for building. When dev find that the designed/tested approach won't work due to implementation realities then it gets handed back over to the other team and so on.
Changes can take a really long time to get implemented and often no one team is fully aware of everything from the tech challenges/limitations, the cost of different approaches, the design implications, and the value of different options. Each team also has different and often conflicting motivations. Ops teams want reliability, Product want to move fast, Design want consistency. It's challenging to make good decisions on the tradeoffs in this model.
An alternative to this is vertically sliced teams where each team has all of the specialities embedded within it in order to look after a product. That means Dev, Product, Design, UX, Ops etc specialities within the team. They can then work together to add value to the product rapidly without handoffs between teams.
When cross-functional teams work well they understand both the cost and value opportunities of things they could work on, and can propose and implement features quickly and without top-down command and control.