I tried to give a look into the problem, even though i'm not expert in unity internals, GTK, desktop files, ecc. There is a big chaos. There is a transition going on between using nautilus.desktop and nautilus-home.desktop (apparently Unity used to use nautilus-home.desktop but is converging to the "standard" nautilus.desktop), as a result there are various .desktop files. There are also .desktop files for the mounted external drives (and launcher icons for external drives have strange / incosistent behaviour, by the way: when clicking on them the nautilus window that opens is 'assigned' to the nautilus launcher [the small arrow is on that] but the drive launcher still controls it: it can bring the window on foreground if it isn't).
On top of that, nautilus already has functions to determine if a specific location is already open, and in that case it avoids opening a new window for it (unless you use the --new-window parameter).
I tried to give a look into the problem, even though i'm not expert in unity internals, GTK, desktop files, ecc. There is a big chaos. There is a transition going on between using nautilus.desktop and nautilus- home.desktop (apparently Unity used to use nautilus- home.desktop but is converging to the "standard" nautilus.desktop), as a result there are various .desktop files. There are also .desktop files for the mounted external drives (and launcher icons for external drives have strange / incosistent behaviour, by the way: when clicking on them the nautilus window that opens is 'assigned' to the nautilus launcher [the small arrow is on that] but the drive launcher still controls it: it can bring the window on foreground if it isn't).
On top of that, nautilus already has functions to determine if a specific location is already open, and in that case it avoids opening a new window for it (unless you use the --new-window parameter).