I'm glad this thread has gotten picked up again. I'd meant to post this link a while back and then life happened.
Dan Woods has a presentation where he details the whole "are microservices allowed to call each other" thing.
https://www.youtube.com/watch?v=yk_VlKUDKMATo me the short version is, you can pick. The situation where they don't call each other he calls a "platform architecture", whereas having them call he other he refers to as a "distributed service layer". My opinion is not having them call each other feels much cleaner and easier to stand up because you don't have those inter-service dependencies. In my (semi-vague) ideal architecture they don't talk to each other directly but loosely communicate via something like Kafka and pub/sub. Whether that works in practice is not something I've had the opportunity to directly try yet.
What I also envision happening is starting out with a notion of this awesomely clean separation and no services call each other, yeah! And then, oops, we forgot about this, and damn, they came up with that requirement, and well, we have this deadline so we could just take a shortcut (but only this one time) and before you know it they all call each other and your platform architecture has become a distributed service layer. :)
A further theory is that the "backends for frontends" (BFF) pattern Sam Newman talks about in his book would help mitigate the devolution. That may be pretty similar to the Orchestration Layer mentioned previously. Further, in my mind the API gateway is more than just a proxy - I would consider that to be the same thing as the orchestration/BFF layer. But I'm not the expert on that by any means.