They have very good players but they aren't exactly filled to the brim with top class players. Outside of KDB they don't have a top 10 player in the world. They are being made to look better by the competition they're facing.
What's funny is that its there more cheaper, less quality options that have created their depths.
Foden (free): A player many thought should leave City as Pep wouldn't give him any mins yet he is top 10 players with most minutes in the team and has been a great depth option for them
Gundogan (24m): A player that was on the market for everyone no one wanted to take the gamble, City did first few years he was a great depth/rotation options, now he's one of the best midfielders in the world
Zinchenko (2m): He's been benching 2 50/60m fullbacks has started many big games and isn't even a traditional FB
Jesus (28m): A player many people on this forum don't even rate he's contributed to 110 G+A IN 185 games for City
^Those are the players mainly benching Mahrez/Sterling/KdB/Aguero/Silva
There most expensive options that have provided depths are:
Laporte (60m): With Stones ressurengent he's fallen behind the pecking order, but obviously a great luxury off the bench
Silva (40m): Brilliant player who deserve to be starter here or somewhere else, but he's provided much needed quality
More or less I've really been surprised and impressed by Zinchenko level tbh