Question on Best Practices - Imported Model to Prefab / Transform Position not applying

Hello!
This is hopefully a newbie / easy question on how Unity works, and what the best practices are.

I am practicing creating a hex grid, using an imported Blender Model. I’m on Unity 3.5 if that makes a difference.

Failure Case

If I import the the model(mesh+uv) from Blender and make it a prefab and instantiate it; I can’t seem to apply a transform.position to it (all new objects appear at 0,0,0)

Workaround
If I create an Empty game Object, then put the model as a child, when I instantiate it, the transform works and the grid lays out nicely.

Question: Should I be doing my Workaround as a best practice? or am I missing a step when creating a prefab directly from an imported model.

Code
My code does not change, but I’ve attached it anyways for reference

function createMap()
{

	for (var counter_width : float = 0.0; counter_width < gridWidth; counter_width+= 1.0)
	{
		for (var counter_height : float = 0.0; counter_height < gridHeight; counter_height+= 1.0)
		{ 
			var GO_tile : GameObject = Resources.LoadAssetAtPath("Assets/Resources/Prefab Objects/base_tile.prefab", GameObject) as GameObject;				
			
			if (GO_tile!= null)
			{
				var new_tile : GameObject;
				new_tile = Instantiate(GO_tile); 
				
				
				/************
				Size and Spacing
				
				Next we want to put several hexagons together. In the horizontal orientation, 
				the height of a hexagon is height = size * 2. 
				The vertical distance between adjacent hexes is vert/height_distance = 3/4 * height.
				
				The width of a hexagon is width = sqrt(3)/2 * height. The horizontal distance between adjacent hexes is horiz/width_distance = width.
				
				Some games use pixel art for hexagons that does not match an exactly regular polygon. 
				The angles and spacing formulas I describe in this section won’t match the sizes of your hexagons. 
				The rest of the article, describing algorithms on hex grids, will work even if your hexagons are stretched or shrunk a bit.
				
				http://www.redblobgames.com/grids/hexagons/
				********/
				
				new_tile.name = "W:" + counter_width + ",H:" + counter_height;
				
				var tile_height : float = tile_size * 2.0; //height is size * 2
				
				var radius : float = tile_height / 2.0;
				var tile_width : float = Mathf.Sqrt(3)/2 * tile_height; //width = sqrt(3)/2 * height
				var width_distance : float =(counter_width * tile_width) + (tile_width * (counter_height % 2)) / 2.0; //if on an odd number row, need to shift by 1/2 a width, else no shift
				var height_distance : float = (counter_height * tile_height * 3.0 / 4.0);

				var tile_position : Vector3;
				tile_position = new Vector3(width_distance , 0.0, height_distance);

								
				new_tile.transform.position = tile_position;
				
				Debug.Log("W:" + counter_width + ",H:" + counter_height + " " + tile_position.x + ","+tile_position.y+","+tile_position.z);				
				
			
			}				
		}
	}

}

Solution Found:

Synopsis: Blender and Unity not playing nicely.

Solution: Export to FBX manually and re-import when in doubt!

The model I was working with was .blend (trying with 2.6x and 2.49 files). And apparently received this error that was hidden from my log clearing:

Blender could not convert the .blend file to FBX file. You need to use Blender 2.45-2.49 or 2.58 and later versions for direct Blender import to work.

I did manual export of .fbx and this .fbx model and prefab based directly off it now accepts the transform.position values. My guess is when there is something wrong with an import some of the base GameObject components get messed up.