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
It really makes sense to create a class and use it many times. In code first approach you need data validation which is possible to implement by using data annotations and When you have many props with the same features your life will be easier by doing so. It is not just about overwriting and in this case it has some other reasons. Hope to understand your question well and my answer is appropriate.