In every case this happens in, it's because of a lack of a management plan, i.e. it's the fault of the leader(s) in the company.
First of all you have to have a property disposal plan. Things declared excess to the company need to be gotten rid of without violating EPA and waste disposal laws, and without attribution of wrong doing on the part of the employee (two person sign off on non-usability works nicely - preferrably one IT and one non-IT person).
Second, you have to have a plan for deciding when something is junk. If it doesn't work, that's easy. If it does work, then what is it's expected continued useful lifespan? Is it already obsolete? Can it be disassembled for useful parts? Does it have proprietary information stored on it? Does it have useful software stored on it? OH GOD! DOES IT HAVE CONFIDENTIAL, PRIVACY, OR BUSINESS CRITICAL INFORMATION STORED ON IT??? The answers to those questions point whether it goes in this week's waste disposal, repaired, or parts & software salvage.
Third thing you need is an inventory system for your software. That tells you what you have licenses for, and whether you can move software from one machine to another. As long as your counts match, you're golden. If they don't, you're stealing from someone.
Fourth thing, you need an inventory system for your hardware too. That's company capital, and small, portable, easily stolen, or misplaced, valuables. You don't know if something's been stolen if you don't know what you have. And if you don't have a record of it, it doesn't mean squat to the police. Mfr, Model, Serial Numbers at a minumum!
Fifth thing is you need a spares system. Keeping spares to stuff you don't have any more is wasteful. Maybe that means all you have is an old video card, holder HDD/portable storage device, and a small jar of PC screws in a drawer. Maybe it means you have an entire room of brand new spares. You still need an inventory of all that, and tie it to the disposal program. Tag your spares with identifying information! What is it, what does it go to, what drivers/software does it use? Put the software disks in an envelope and duct tape the envelope to the hardware so they stay together is one way. Attaching a note saying where the software is stored is another.
Let me hit on the second item again. Most hard disk drives are never going to be used again on systems that you are disposing of. They are either past their life expectancy and will fail sooner than later. The best thing to do is do a thorough wipe and then destroy the patters in the drive somehow. Smash and burn works for small disposal volumes, although you have to check for burn regulations in your area. Commercial shredders are even better as the metals and plastics are totally ripped apart, separated and usually the itty bitty peices are melted down for recycling. If you are absolutely dead set on giving the systems away, then you still need to thoroughly wipe the drives first - and not just Ollie North deleting. After you've done that, then you can reload the software you are transferring the licenses for to their new owners.