PostgreSQL SELECTs not returning correct result following recovery?
The index data order on disk for text columns depends on the locales provided by the underlying operating system. 

The same locales (that is, with the same name) may differ between operating systems on the order rules, even on simple things. As an example this question:
PostgreSQL 9.1 streaming replication problem: replica fails to use an index properly 
shows how "0102"and 0102sort differently on Ubuntu and FreeBSD.

The result in the physical index structure is that one value should come before the other in one OS and vice-versa in the other.

The problem with a recovered base backup is the same as with replication: the on-disk structure of the index is used as-is, resulting in a corrupted index in the target system if the column's locale doesn't sort exactly the same between systems.

It's mentioned in the comments that the origin system is CentOS and destination Mac OS X. Given that CentOS uses GNU libc and Mac OS X certainly a BSD-like libc, I'd think that there is no chance at all for on-disk postgres portability between these systems.