xPDO::newObject() should be used to create instances of xPDOObjects because a) it takes care of making sure the class is loaded if it is in a registered package (packages in xPDO define a base model path to search for classes in), and b) takes care of passing the xPDO instance into the object for you. It’s mainly just a convenience method or shortcut to the common things you would need to do to instantiate an xPDOObject.
What’s the difference?