I think it does work in XP, I think the problem is that you are accessing the wrong array element:
Try:
Return nics(0).GetPhysicalAddress.ToString
Or better still, loop through the array, and return the first one that is an ethernet adapter and operational.
There is a Tip here that shows the code - it's in C#, but the code is very easy to follow, look at the GetMacAddress method:
Retrieving IP and MAC addresses for a LAN[
^]