I think the confusion is over the reason for having the TABL instructions in the first place.
The program counter is exclusively responsible for fetching INSTRUCTIONS and unless diverted by a jump/branch instruction it advances along the instructions one at a time. Only the program counter can point to instructions to be executed.
The TABL instructions are for data storage. The address is split into three because the register width is too narrow (8 bits) to cover the entire memory range in one go, these are referred to as TBLPTRU, TBLPTH and TBLPTRL, the last letter referring to Upper, High and Low. The table address is these combined to make 3 x 8 = 24 bits. The data at the table address is 8 bits wide and is read using the TBLRD and associated write instructions. Some of the instructons have automatic increment or decrement versions because reading data sequentially is such a common requirement, they automatically add or subtract one from the value in the TBLPTRx registers so they 'point' to the next data in the table. This saves having to reload the address each time when the next value in the table is needed, each read/write operates on the next address automatically.
Data is never executed, the TABLPTR values are not put into the program counter unless the program is written to make that happen. For example, the programmer could use the data table to hold addresses, read them then load them into the program counter but the hardware will never do that by itself.
Brian.