The main reason is that at the moment I am placing it in the world frame of reference, then using the OrientTo and MoveTo commands to get it into the right place. But there is a tendancy for the OrientTo command to cause the axes to be anti-allgned (i.e. parallel but in the opposite directions) so my objects can be placed at the origin, but are often pointed in the wrong direction.
I can circumvent this by doing some additional checking and rotations before hand to make sure that the angle between the "upto" vector and "object" vector is less than 90 degrees, but a much simpler and more elegant solution would be to just have the object loaded into the frame of reference of my reference origin.
I know its possible to place the object in the reference origin's frame of reference with the GUI (this is standard practice) but I dont know how to do this with python scripting (or if its possible) - it always defaults to the world frame of reference.