This is related to [the transpiling][1] of the circuit when it goes through the backend. Since global phase is non-physical, statevectors and unitary operators that differ only by a multiple of a scalar on the complex unit circle are considered equivalent, and thus the Statevector Simulator backend by default considers it kosher to apply any global phases it creates when transpiling gates anywhere in the circuit as a global phase that is applied before all other gates. You can see what circuit is run post-transpile via the following code:

    job = execute(circuit, simulator)
    job._circuits[0].draw()

And should get something along the lines of:

[![Quantum circuit diagram showing a global phase as pi and no gate between the saving of psi0 and psi1][2]][2]


  [1]: https://qiskit.org/documentation/apidoc/transpiler.html
  [2]: https://i.sstatic.net/E3qpX.png

The RZ gate is functionally and physically the identity matrix since it is equivalent to the identity matrix multiplied by -1, so the transpiler turned in into a global phase of $\pi$ (which is a multiplication by $e^{i \pi} = -1$) applied to the statevector from the beginning. If the RZ gate were, say, split up into two rotations of $\pi$, and then a barrier were placed between the two, the transpiler wouldn't extract the global phase and move it to the front, and you would get -1 as the final inner product answer, among other potential changes that could be made to either the circuit or the configuration to avoid this behavior.