1) NAT (Network Address Translation) works regardless of DHCP. It TRANSLATES, not ASSIGNS.
In computer networking, network address translation (NAT) is the process of modifying network address information in datagram packet headers while in transit across a traffic routing device for the purpose of remapping a given address space into another.
Not sure I really have to go into more detail. (please note the lack of "assign", "providing addresses" or "responding to dhcp requests"). Now, NAT vs IP masquerading - those two are a bit harder to distinguish between.
2) DHCP is a dynamic configuration protocol. It has jack to do with NAT, IP forwarding, masquerading, etc, etc and so on. It does help assign DNS servers and a Gateway if one should be used.
Just so we are clear..
I'm not sure a standard DSL/Cable modem actually handles NAT. Since it's unable to assign local IPs, [...]
NAT != assigning IP addresses
DHCP != routing or anything to do with packet advancement, reversement, traversement or enjoyment.
Let's not even get started on Gateways..