The MAR is the CPU's "where" register for memory. Memory's address input is wired to it and nothing else, so any memory access starts by putting an address in the MAR.
In Tiny8 it's loaded from one of two places, chosen by a multiplexer:
- from the PC in step F1, to fetch an instruction;
- from the IR's address field in step D, to reach an operand.
Its partner is the MDR, the "what" register: the data word read or about to be written. Together they're the CPU's only connection to memory.
Sizing rule: the MAR holds an address, so its width is the number of address bits. A memory of N words needs ⌈log₂ N⌉ bits. Tiny8 has 16 words, so its MAR is 4 bits. The MAR's width has nothing to do with the word size; that sets the MDR.
Why a separate register at all? The address must stay steady for the whole read or write. Holding it in the MAR keeps it still while the PC moves on.