NSUserDefaults is also a PList but the main difference is that it is recommended to use NSUserDefualts for small data such as flags(for example "isUserLoggedIn" or "isFirstLaunch"), but use PLists for storing big hierarchal data.
Other than this You can store Plist in any location you want (allowed by iOS) but you cannot change the location on which NSUserdefauls are stored. It is defined by OS.