Sad, but I can see why this happened.
Thought he'd become our backup RB next season as we know how he did against Messi, and all season whilst Danilo was not impressing. That's changed as Danilo has looked much better and could eventually become our #1 as Walker is a bit older. It's left Maffeo, a more unproven player, the odd man out given the level we are at now.
We got a good fee outside of PL or PSG buys, and since we have 1st option/buy back this is arguably another version of "loaning out" our best talent. City seem to do this with those the backroom genuinely had thought would make the squad (Nacho and now Maffeo). He can't fill our needs for various reasons now, but he could very well become that much better, our situation changes, and then we have an effective insider price.
Wish him very well as the Bundesliga will be another good test that can widen his options if he proves himself.
Important to note he has 1 year left on his contract. We had a similar situation with Denayer, I think, where he signed a new deal with us and look what's happened to him. Tosin also went this route, although he's still younger, so one can see why Maffeo might want to have more control over his future, even if he would like to play for us/Pep.
Supposedly, Pep also has a strong relationship with the Stuttgart director of football, which makes me think Maffeo's City storyline may not be over.