Join indexes must be defined using outer joins to be able to cover inner and outer join queries. Think of an outer join as producing a result of two sets of rows. The first set corresponds to the set of matched rows when a row from the outer table matches one or more rows from the inner table (this set corresponds to the set of rows defined by the inner join with the same join condition). The second set corresponds to the set of unmatched rows: those rows from the outer table that match no rows from the inner table.
Except for the presence of the unmatched row set, an outer join is the same as an inner join, and produces the same result. Therefore if an inner join query can be completely satisfied by the matched set of rows from an outer join index, the Optimizer uses it.