If you are modifying the core game, like seanw3 is doing with his balance mod, it is far easier to do it in the installation directory. Not just "easier" but practically required.
However, and there IS an "however", the problem with using this method is that the mod does not work with other mods. There can only be one copy of each file. The mod is not modular, it doesn't really work with other mods. Of course, if you're doing a balance mod this isn't much of an issue because the changes you make probably make it so that it wouldn't work anyway.
But consider a mod that mostly adds content, like Stormworld. Because I don't have much reason to modify core content (with a few exceptions) it becomes much more appealing to not use the installation directory. In addition, since I am balancing my mods after the real game, the mod should theoretically be compatible with other similar mods.
In addition, some of the problems I encounter can actually be turned into benefits. Imagine that I have a race that should not be able to build logging camps. All I need to do is give them a trait and add something like this:
<ImprovementType InternalName="LoggingCamp">
<Prereq>
<Type>RestrictedAbilityBonusOption</Type>
<Attribute>NoDefensivestructures_Elf</Attribute>
<Target>Player</Target>
</Prereq>
</ImprovementType>
Along comes modder X. Modder X also wants to do something with the Logging Camp. He wants to flag a city with a logging camp so the units within have a hidden unitstat. Why? Maybe to make forest monsters more dangerous when attacking the city.
<ImprovementType InternalName="LoggingCamp">
<GameModifier>
<ModType>City</ModType>
<Attribute>AdjustDefendingUnit</Attribute>
<StrVal>ExpandedTraits_FLAG_DefendingCityWithLumberMill</StrVal>
<Value>1</Value>
</GameModifier>
</ImprovementType>
The result? Our mods aren't clashing and will work side by side.
As you see, there are benefits and drawbacks from either method.