Since there are a lot of causes - let's try to narrow down some things.
If you are on Snow Leopard - you can get some more detail on the MacBook to know if there is interference or if there is potentially a hardware error.
Hold the option (or alt) key and press the WiFi icon in the menu (you'll have to add it if it's not in the menu for this testing.)
All the mac cares about is transmit rate - it's the best number to tell how much data your mac thinks it can send reliably to the router. The higher the rate, the better. A high transmit rate is all that matters - even if the signal is weak, you still have a good connection if you have a solid transmit rate.
Next is RSSI - it's less intuitive. I tell people think of sunlight into the ocean. If you are -20 feet below the surface it's really light. RSSI of -100 is really dark / really faint signal. In ideal environment - no noise, good antennas on both mac and router and good amplifiers reading the singals - you can still operate at -100, but any interference or extra distance, you could stop getting a signal.
Different macs have different RSSI - so if you have a close match in hardware you can be sure the problem is the mac by comparing with another. If not, it's more guesswork. Your iPhone WiFi antenna is likely 10 times as big as the Mac's antenna so it's looking more like a signal issue than anything else.
I hope this helps you decide what next steps to take to find the cause.
You can change the router, change the physical location or change the hardware. If a repair shop is close, maybe try a diagnosis there. If not, you'll have to take the mac to other locations with that router and try changing the things you can control.
It's not likely software since moving the mac closer to the router doesn't change the software, but you might check for updates if some new firmware does better with interference or error handling. It's a long shot so I list it last.
EDIT - I am home and can report some transmit rates. On my older equipment, transmit rates of 24 to 54 are seen on an old linksys 802.11b router. My MacBook Pro gets transmit rates of 200 to 300 pretty much all around the house. Even when I have one bar in the menu bar for airport signal strength, these transmit rates stay high as the RSSI goes to -90 (which is getting far away from the base station)