For best results from nmap, you should always nmap scan from a machine on the same local subnet as your target, if you can, otherwise you will be unable to see the MAC addresses of any of the items on the subnet being scanned. Although not absolutely essential, the mac address allows us (or rather NMAP) to figure out who the hardware supplier is likely to be with quite a high degree of accuracy.
The reason for this is that the mac address is associated with the hardware (Media) layer of ethernet cards hence Media Access Control (MAC Address) see (
http://en.wikipedia.org/wiki/Mac_address). Different hardware manufacturers use different parts of the limited address range, so MAC addresses are always unique, but MAC addresses from the same manufacturer are similar (usually they share the first few bytes).
However TCP/IP doesn't have to run over ethernet. Therefore mac addresses are not part of the TCP/IP frame, and are not passed between networks. In other words you can never see the mac address of a machine on a different subnet, because you are relying on TCP/IP. You can see the mac addresses of all of the machines on the same subnet if they are connected via ethernet, (or possibly on virtual subnets, if they use virtual mac addresses) because you are on the same media (hardware) segment. Hope this helps.