I just ran into this issue. I took a packet capture of the DHCP conversation to debug it, and found that the DHCP server was responding with a DHCP NAK packet with "address in use" as the message. And indeed, my system is sending the DHCP REQUEST with a request for a specific address (which is already in use).
Rather than trying again without requesting the previous address, the internal DHCP client seems to just give up and no IPv4 address is assigned. I do have an IPv6 address, so NetworkManager considers the connection UP, not sure what happens if no global IPv6 address can be assigned. I can force this issue to happen by locating the internal client lease file at /var/lib/NetworkManager/internal-$GUID-$IFACE.lease and setting the ADDRESS to something my DHCP server will NAK. Removing the file (or setting the address to one not already in use) fixes it. -- Will Dyson