I seem to understand the reason behind taking help of MetadataTypeAttribute
to Add Validation to the Model in case of Database First as we want to avoid the changes
I think the questions is where is the difference between data annotations on model and on code first.
So at first you have data validation
this is setting up attributes on your code first model and this sets up configuration of database columns and this will set the size and restrictions on your data model. (this once populated usually does not change without migrating data.)
Model validation
model validation is your model you are binding your form into. This model would contain more information for your UI.