Instead of explicitly coding all your , lets say your icon paths, you can query Maya to return the location of your preferences pathname during startup. This way you can set your own custom path that can be picked up from multiple users during maya startup.

global proc shelf_soup(){
  string $appver= `about -preferences`; 
  string $soupIcon= ($appver + "/prefs/icons/soup/");
	//Or wherever the shelf location might be
	//Other useful commands are `getenv "MAYA_APP_DIR"`
	shelfButton
		-enableCommandRepeat 1
		-enable 1
		-width 35
		-height 35
		-manage 1
		-visible 1
		-preventOverride 0
		-annotation "nodes"
		-align "center"
		-labelOffset 0
		-font "tinyBoldLabelFont"
		-image ($soupIcon+"SOuP.xpm")
		-image1 ($soupIcon+"SOuP.xpm")
		-style "iconOnly"
		-marginWidth 1
		-marginHeight 1
		-command "try: soup().updateShelfMenus()\nexcept: pass"
		-sourceType "python"
		-commandRepeatable 1
  ;
}
}
 
PS. Here's another tip, in regards to having multiple users using the same shelf, you can avoid maya from re-writing when you quite the application, you can set your shelf file to read-only.

Here's a useful link from djx's blog.