If I had to venture a guess, and from a quick look in the source code, I'd say the reason is because:
(v2.2.1)
void FS_InitFilesystem (void)
{
cvar_t* fs_usehomedir;
const cmdList_t *commands;
Com_Printf("\n---- filesystem initialization -----\n");
for (commands = fs_commands; commands->name; commands++)
Cmd_AddCommand(commands->name, commands->function, commands->description);
fs_usehomedir = Cvar_Get("fs_usehomedir", "1", CVAR_ARCHIVE, "Use the homedir to store files like savegames and screenshots");
/* basedir <path> */
/* allows the game to run from outside the data tree */
fs_basedir = Cvar_Get("fs_basedir", ".", CVAR_NOSET, "Allows the game to run from outside the data tree");
/* start up with base by default */
FS_AddGameDirectory(va("%s/" BASEDIRNAME, fs_basedir->string));
/* then add a '.ufoai/base' directory in home directory by default */
if (fs_usehomedir->integer)
FS_AddHomeAsGameDirectory(BASEDIRNAME);
/* any set gamedirs will be freed up to here */
fs_base_searchpaths = fs_searchpaths;
/* check for game override */
fs_gamedir = Cvar_Get("fs_gamedir", "", CVAR_LATCH | CVAR_SERVERINFO, "If you want to start a mod not located in "BASEDIRNAME);
if (fs_gamedir->string[0])
FS_SetGamedir(fs_gamedir->string);
}
got changed to
(v2.3 dev)
void FS_InitFilesystem (qboolean writeToHomeDir)
{
Com_Printf("\n---- filesystem initialization -----\n");
#ifdef PKGDATADIR
/* add the system search path */
FS_AddGameDirectory(PKGLIBDIR"/"BASEDIRNAME);
FS_AddGameDirectory(PKGDATADIR"/"BASEDIRNAME);
#endif
if (writeToHomeDir) {
FS_AddGameDirectory("./" BASEDIRNAME);
FS_AddHomeAsGameDirectory(BASEDIRNAME);
} else {
FS_AddHomeAsGameDirectory(BASEDIRNAME);
FS_AddGameDirectory("./" BASEDIRNAME);
}
#ifdef COMPILE_UFO
FS_InitCommandsAndCvars();
#endif
Com_Printf("using %s for writing\n", FS_Gamedir());
}
But this is just a quick guess that took no more than 3 minutes to find... So, it's hardly researched...