Home wireless routers combine several things
- a (typically 4-port) switch
- a router
- a wireless access point
Wireless access points I believe keep track of MACs they have seen in the past, and know the MAC of each associated client of course. So if the wireless access point receives traffic from one associated client and it's going to another associated client, and "AP Isolation" is NOT disabled, there is no need for the wireless hardware to let any routing function (typically CPU code such as a Linux or VxWorks kernel) in the router know about it.
Whether or not that's what the hardware actually does is another matter entirely (I can imagine some cheap wireless hardware giving traffic destined for another wireless host on the same subnet to the CPU) - but even if it doesn't, the routing function (Linux kernel, etc.) should still route it back out of the wireless interface, because that is what the route table is telling it to do. This would be inefficient but wouldn't suprise me if due to cost it's done this way.
Assume you have 4 computers (A, B, C, D) connected to a switch, and then a 5th port connected to a router. If A wants to talk to B, the switch will know (through remembering MAC addresses that have passed through it) or find out (through flooding outgoing traffic to all ports and remembering who responds) which ports A and B are on, and can forward directly, and the router never gets involved. With wireless, all associated clients are basically on a "wireless switch" and it works (or should work) the same way.
So it should BRIDGE (that's the proper term for Layer 2, not ROUTE) based on Layer 2.