The old behavior was an unintended consequence of the way Terraform 0.11 handled references, caused by an ambiguity in how map values were stored in the state. This bug was fixed in Terraform 0.12 to resolve that ambiguity and thus allow for
.foo.bar.baz to be parsed as if it were
["foo"]["bar"]["baz"] instead, as the documented language grammar suggested it should be.
There is no way to use the old buggy syntax in Terraform 0.12. A map key is always a single string and never interpreted as multiple separate parts.
The type system changes in Terraform 0.12 allow a provider to, in principle, declare an attribute as being a map of map of map of string, which would allow the chained attribute syntax you mentioned to work by returning nested maps instead. Unfortunately, because we’re still using the Terraform SDK written for Terraform 0.11 and prior (to allow the cross-compatibility between both versions) there is no way for a provider to currently do that in practice, or else it would be incompatible with Terraform 0.11. Development on an updated SDK designed around the 0.12 data model is starting now, and will eventually allow providers to make use of this.
In the meantime, nested maps cannot be permitted because the 0.11 provider protocol and state snapshot format have no way to serialize them.