I should say your colleague is right.
Routers: Make routing decision according on routing table, which is based on L3 addresses, but do change L2 MAC headers. A router has the ARP entries of all hosts connected to all of its interfaces which have communicated through the router, but not the ARP entries of all hosts in the network. (Consider a multi-router set up, which is typical)
Switches: Make switching decision based on MAC table (not ARP table, it is different) but do not change the L2 MAC headers. Switches may add tags (IEEE 802.1q, Cisco ISL, etc.) to the MAC headers but the tags should have been removed before reaching the end hosts.
The typical operation is like this:
(1) The 1.x host (A) wants to send to 2.x host (B).
(2) A realises B is on a different network judging from the subnet mask and ip addresses and knows it need help from a router.
(3) A does an ARP operation to find out the MAC address of its default gateway, which is a router (R).
(4) A sends to R with source MAC = A’s MAC and destination MAC = R’s MAC. The switches in between them pass the frames intact.
(5) R sends to B, rewriting the source MAC to R’s MAC and the destination MAC to B’s MAC (before this it should have an ARP entry of B; otherwise it would do an ARP operation to find out B’s MAC).