It looks like there is a major difference in accessing a child object using:
It looks like the first will access the children of the instance, and the second will access the children of the prefab (but not the instances)? Is that the main difference?
Are you using UnityScript and is mainObject a GameObject?
If that is the case, the first is calling the method Find from transform, while the second is calling the static method Find from GameObject class. The differences are:
1 - the 1st is a method from a Transform instance and the 2nd is static method from GameObject
2 - the 1st returns a Transform and the 2nd returns a GameObject
3 - the 1st searches in the children of the given transform, while the 2nd searches in all the scene