Regarding DMZ, yes, no problem to allocate different VLANs to different VDOMs over the same physical link, here is reference for that
https://kb.fortinet.com/kb/documentLink.do?externalID=FD31639 Regarding multiple VDOMs it heavily depends on the organization and its policy. Usually, in places where different firewalls (in your case VDOMs/contexts) are required for the same company, it is done because of some legal regulation/security policy obligation. Then you have no say in this. In my opinion, if it is the same company and same VDOMs admin(s), then it is more hassle than better security - you have to change multiple policies to do one thing, and finally it ends up the internal VDOMs having rulebase "Permit Any Any" and all work is being down on Root Vdom. Fortigate, after all, works by looking at interface of a policy as well, so allocating each department/unit its own L3 VLAN interface and rule section will do the same work.
When I do advise clients, for easy management purposes, to have multiple VDOMs, is when they have (if migrating) or plan on having large rulebase, then managing this mess of hundreds of rules would be a nightmare.
In other words, like any other firewall, VDOMs in Fortigate is more management separation decision, rather than security based.