I recently found out, with drastic consequences, that when deploying custom objects if we miss out some tags like then salesforce automatically assumes
<enableReports>false</enableReports>
in the target orgs(where we intended reporting to be enabled). Thus this missing tag made salesforce automatically assume that reporting needs to be turned off. Personally, I find this STUPID especially when they boast of the constructive changes only principle and stuff. May be I am not seeing the bigger picture due to my lack of knowledge, the forgive my previous comment.
So, fellow developers, are there other tags/properties in salesforce metadata api that behave likewise - makes salesforce automatically assume some unintended value. Just learned that 'enableReports' need to be explicitly specified in the object xml . Are there any other tags in object xml or any other metadata type that behaves similarly. Please do share your knowledge if you have come across a similar experience. Thanks in advance.