Setting transform in prefab start() trumping parent object's transform call

I have a prefab that sets its transforms to identity values in its start function like this:

    void Start()
   {
    //initialize member variables
    planeObject = new Plane();
    center = new Vector3();
    mesh = GetComponent<MeshFilter>().mesh;

    //set transform to identity
    transform.SetPositionAndRotation(new Vector3(), Quaternion.identity);
    transform.localScale = new Vector3(10.0f, 10.0f, 1.0f);
    }

After the parent object instantiates the object, it will want to change that transform as shown in the code below. However, this will not work unless I comment out the transform.SetPositionAndRotation function in the prefab. Why? The parent call is after the instantiate call.

     void Start()
   {
    GameObject xzPlane = Instantiate(plane, transform, false);
    xzPlane.transform.Rotate(new Vector3(90.0f, 0.0f, 0.0f));
   }

You instantiate the prefab and the prefab takes time to initialize. Make a custom initialization method in the child that you call right after you instantiate and put the code from the Start method of the plane in your new initialize method, and take it out of start. See if that works