I was seeing a similar issue. To investigate further I added an editor script like this, to log the vertices of the mesh I applied it to:
using UnityEngine;
using System.Collections;
using System;
[ExecuteInEditMode]
public class TestScript : MonoBehaviour
{
void OnEnable()
{
Mesh mesh = GetComponent<MeshFilter>().mesh;
Vector3[] vertices = mesh.vertices;
foreach (var vertex in vertices)
Debug.Log(String.Format("{0} {1} {2}", vertex.x, vertex.y, vertex.z));
}
}
This logged coordinates like this:
-42.4 -6.608938 -1.6
-42 -6.579293 -1.6
-42.4 -6.652683 -1.2
-42.4 -6.608938 -1.6
Whereas my original .obj file had vertices like this:
v 42.4000015258785 -6.60893774032594 -1.60000002384146
v 42.4000015258785 -6.65268325805652 -1.20000004768452
v 42.0000000000008 -6.57929277420054 -1.60000002384146
v 42.0000000000004 -6.57929277420055 -1.60000002384106
So as Steve H suggested, it does look like Unity is negating the X values while importing. It must be assuming that the .obj file is right-handed, and so it converts to Unity's left-handed coordinate system by negating the X.
It looks like Unity also does some re-ordering / optimisation of the mesh, as the order and number of the vertices in Unity is not the same as the original .obj file either.