A more focused question is to ask What are the Main differences between PLC's and DCS controllers?
By which I mean let's not look at the networking, HMI etc, but just at the controllers themselves.
And here there are still differences that go back to the Discrete origins of PLC's and the continuous origins of DCS's
With a PLC you can code close to the metal, easily setting and responding to individual bits, bytes or words, or even tables of them with confidence that the program will use little memory and execute fast.
This is not the case with the controllers in most DCS's.