Most of the time indexed addressing and jndexed addressing produce the same effect when they happen. There is one important exception: Addressing of semaphores.
The I value is added to the base byte address. That means successive values of I (0, 1, 2, 3 ...) will select the same bit number in successive bytes of RAM.
The J value is added to the bit address. That means successive values of J (0, 1, 2, 3 ...) will select successive bits in the same byte of RAM, and progress to the next byte of RAM if necessary. If you are using automatic RAM allocation you would normally not need to worry too much about how it works.
In multi-channel programs you would use a "quantity" (how many items in the array) argument in your defBYTE, defSEM etc declarations.