Index registers are used for a special kind of indirect addressing where an immediate constant (i.e. which is part of the instruction itself) is added to the contents of a register to form the address to the actual operand or data; architectures which allow more than one register to be used this way naturally have an opcode field for specifying which register to use.
In early computers without any form of indirect addressing, array operations had to be performed either by linearly repeating program code for each array element (i.e. over all address locations), or by using rather "dirty" self-modifying code techniques – both alternatives leading to quite significant disadvantages in program flexibility and maintenance, as well as being wasteful of computer memory; the latter a very scarce resource in computer installations of the early era (as well as in early microcomputers several decades later).
In general, index registers became a standard part of computers during the technology's second generation (roughly 1955–1964). See, for example, the IBM 700/7000 mainframes. Early "small machines" with index registers include the AN/USQ-17, around 1960, and the real-time computers from Scientific Data Systems. The first microprocessor with an index register appears to have been the Motorola 6800, whose upgraded clone MOS Technology 6502 made good use of two such registers.