I agree with your basic point, but this has very little to do with the difference between hardware and software, but boils down to the question of whether there is an actual implementation.
Maybe that should be the requirement then, instead of saying "software patents cannot exist, but hardware patents can".
Maybe that should be the requirement then, instead of saying "software patents cannot exist, but hardware patents can".