The central difference is that the EXISTS query will have not more than one row per RAVE object; that’s how SELECT works: either a row is in or it is not.

The JOIN however, my produce more than one row per RAVE object if there is more than one ARIHIP object in the close vicinity of the RAVE object – and given there are many double stars resolved already in the Hipparcos catalogues, that’s a fairly common thing.