Kylie,
Let me give you an example of how programmatically via ArcObjects changing the addins location could be useful.
Suppose you are in an environment where you need to have access to certain "well known" locations, but in fact you don't know all or any of which are available to you. This might be because you are not necessarily a "gis" person, rather you use ArcMap as a business tool and all the functionality you need has been programmed in for you. Now, also suppose that the admins have, for example, set up a table structure that consists of the users, their workgroups and the directories each is allowed to access.
So, the first time you get into ArcMap you push a button and it sets up your add-in directories for you. Or maybe every time you go into ArcMap, it checks your directories against the table and effects any changes that my have happened. (This could also be because you may be accessing ArcMap from different machines and the settings necessarily have to be re-established.)
And I can tell you that messing with the registry is something we prefer not to do. In some environments, it is forbidden.
This is only one example and for sure other users could probably come up with better ones.
In our place, we try to insulate the users from having to know where anything is. Most of them have no clue as to how the various directories and connections are configured and they don't want to (or need to) know -- their business specialties are elsewhere. If they did have to do all the configuring by themselves, then they would be less likely to use the software. This way, with a single program and a single point of administration, the organization benefits from automated efficiencies.
I hope this answers your question.
Rob