The computer can send any kind of data over its network interface – if you're connected to Ethernet, then the OS is in full control of the Ethernet frames that it sends. It's the OS, not the network hardware, that handles IP, ARP, and other protocols.
Rather, the only question is how regular programs on that computer are able to send data without having an IP address.
In IPv4, the DHCP client uses raw packet sockets – that means it directly sends layer-2 frames; the DHCP client has to build its own IP header when sending and performs its own filtering when receiving. (See for example packet(7) on Linux.)
When doing so, the DHCP client software will just fill in "0.0.0.0" (aka the "unspecified" address) as the source address in IP packets used for DHCP 'discover' and 'request' messages. These packets are broadcast so the destination is "255.255.255.255" and ARP is not necessary to send them, as IPv4 broadcasts use a fixed layer-2 address.
(So yes, you could say that DHCP in IPv4 is practically layer-2 communication that's just disguised as UDP/IP.)
In IPv6, meanwhile, a host will (generally) always have an automatically assigned "link-local" address on each interface. This means there is no need for raw sockets – infrastructure packets such as DHCPv6 requests or Router Solicitations can simply be sent from the link-local address using standard UDP or "raw IP" sockets. (The latter are documented in raw(7).)