Means testing is how you create programs that are doomed to fail from the start. Wealthy and middle class voters always start to resent the poors getting "free stuff" so programs get cut back until they buckle, and then they get eliminated. There is a reason the Republicans haven't been able to destroy Obamacare, but not Medicare or SS.
Means testing also rarely saves the government money. All the extra bureaucracy for tracking eligibility usually costs more than it saves. It's better to provide for everyone then make it up with progressive taxation.