Assuming your are talking about a common TCP/IP over Ethernet network.
1 - this is not the case, if the destination is on the same network, the connection is made directly to the destinaiton without involving the gateway
2 - ARP is defined by RFC826 in which it is stated:
ar$tha: Hardware address of target of this packet (if known).
If it does not (find the address in the cache) it generates an
Ethernet packet with a type field of ether_type$ADDRESS_RESOLUTION.
[...] It does not set ar$tha to anything in particular, because it
is this value that it is trying to determine. It could set ar$tha to
the broadcast address for the hardware (all ones in the case of the
10Mbit Ethernet) if that makes it convenient for some aspect of the
implementation. It then causes this packet to be broadcast to all
stations on the Ethernet cable originally determined by the routing
Since the RFC doesn't specify the destination address, it's up to the implementation to set at whichever value. Some Operating Systems (Solaris I think) use all-zero while others use all-one (broadcast) address.