Interesting how, with all the power Flows can offer these days (we can even customize Sharepoint integration with Flows), there is still one scenario which just cannot be covered without the classic plugins/workflows.
Namely, anything that requires synchronous (or real-time) processing, would need a plugin or a workflow.
For example, what if you wanted to intercept all create/update operations in such a way that nothing gets saved when the data does not validate?
The diagram below would not reveal anything new to the folks who have been working with Dynamics for a while, but, if you are just getting into the model-driven applications development, this may be something to keep in mind:
Although, what complicates this a little bit is licensing. Validations are great, but, if there are users utilizing your data in a Canvas Application on Plan 1, adding a plugin/real-time workflow to an entity exposed to such an app would require those users to go up to Plan 2.
Anyway, just to make this post “complete”.. how do you display server-side validation errors in the interface?
Here is how you can do it from a real-time workflow: https://survivingcrm.com/2013/11/using-real-time-workflows-to-show-error-messages/
And here is how you can do it from a synchronous plugin: https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/best-practices/business-logic/use-invalidpluginexecutionexception-plugin-workflow-activities