If the IP is always changing on a
machine, by way of a dynamic IP, would
this make it a very bad idea to join a
machine to a domain?
First - why the heck does the IP always change? DHCP has a method do lease the IP to a machine, and hte lease should be long enough that the machine does NOT always change IP. Always changing IP = configuration error in DNS.
Second, so what? Put the IP in static. And? IThe computer will maintain it's DNS information as it did before, jsut always have the same IP. I do that with pretty much all servers so that they can start after a failure (power outage) without having to delay for the DHCP server takes some time to get up.
For example, in the enterprise, for
machines to be joined to the domain,
we are always given a block of static
IPs so I guess I must be on the right
Like in most enterprises, this goes back to some guy not being competent in his job (idiots at work). As long as the DNS supports dynamic regisitration (and windows DNS does) there is exactly NO (!) issue with dynamic IP addresses for all machines. DC's are special as a DC must be able to find A WORKING DNS to connect to the domain and start, and if the DNS' reset, all DNS may be off. it makes sense to keep the domain controllers static, pointing to each other for DNS purposes, to make AD start faster.
All other machines CAN be on dynamic IP addresses (which also does not mean constantl changing - this is another "idiot at work" issue, leases should be long enough for machines to not wander around randomly, except maybe after a holiday - 5-8 days is a good time), although, as others have pointed out, it is very good practice to put servers and all "primitive" items on static IP (mostly because the primitive items like printers often lack the methods to update their DNS information, which makes them wandering around hard, and servers you want to come up fast afte ra reboot).
The main issue with server is the "static" nature eof DHCP in Ipv4... It is queried for ONCE, never again. So if the DHCP server is not available when th server boots - it does not get a configuration. This is different to IpV6 where the IP addresses (wel, networks) can be assigned post boot, a routers announce all the networks they can handle and all machines in the network pick them up (and drop them) as routers become visible / invisible.