If you want just the last row then you want to order the results so the last row actually comes first then instead of using "get" which will retrieve all rows use first:
$vehicle = Vehicle::leftJoin('registration_history AS rh', 'vehicles.id', '=', 'rh.vehicle_id')
->leftJoin('registrations AS r', 'rh.registration_id', '=', 'r.id')
->select(*)
->groupBy('rh.vehicle_id')
->orderBy('rh.created_at', 'desc')
->first();