In Indirect Addressing mode, Instruction contain address of Effective Address(M-->EA-->operand), So it is used for pointer implementation.
In Index Addressing mode used for array implementation because we can access array by changing the index value in instruction.
For program relocation best addressing mode is relative addressing mode, but we can implement relocation using Base Addressing mode by changing value in Base