Nothing is certain to remain the same.
Hard-drives get swapped out, re-arranged (you might be assuming a master drive?)... Not so with OSX... I can have a dozen bootable drives connected at the same time, and choose which one I want to boot from.
Motherboard... sure there is a chance that an Apple Tech will forget to re-serialize a repair... but I bet they only do it once
Network (NIC) cards? same as hard-drives...easy to swap, easy to spoof.
So is it possible to make a pirate proof protection scheme? Not very likely (Apple or Microsoft will pay you big bucks if you come up with one). Can you make it difficult for casual hackers? sure... Now you have to balance the effort to incorporate something into your application, the benefit you derive from it, and how much it annoys the end user (and oh yeah... make sure it has no "bugs" in it, or you may render your customers dead in the water).
I am currently using the 3rd generation of a private/public key method... which so far works quite well for me.
The client simply sends me the "serial number" for his install (generated by the app automatically the first time it is run)
and I send him a "key". The serial number is stored encyrpted, and is not even hidden.... But if that file were moved to another computer, the install over there would still get a new serial number when the app detects that the decryption keys don't work on that computer (the app just resets the security and unregisters that install)