How can ADD be a 1 byte instruction?
http://www.keil.com/support/man/docs/is51/is51_add.htm

You are correct that ADD A, R5 is redundant. This is probably done for clarity in the code, to make it slightly more human-readable.

ADD is either a one-byte or a two-byte instruction, depending on what's getting added to what. If you're adding a constant, or the value at an arbitrary address, then ADD is a two-byte instruction. It's only a one-byte instruction if there are enough bits in the opcode besides those indicating ADD to indicate something else useful. In this case, there are two variations: add one of eight registers, or add what's found at a particular address (with that address stored in one of two registers).