Why does `arch` output `i386`?
Here you go:

uname -p      print the machine processor architecture name.

uname -m      print the machine hardware name.

The arch command with no arguments, displays the machine's architecture type.

Ultimately I suspect this is the answer you want: https://stackoverflow.com/questions/12763296/os-x-arch-command-incorrect

For further confusion, run:

$arch
i386
$machine  
i486
$uname -m
x86_64
$uname -p
i386