At least some of the robodialer operators programatically check out a block of numbers from a VoIP vendor, make a bunch of calls, then release the numbers. If all they have to do is correctly report the number they're calling from, that's pretty useless. The called party has practically no recourse because the number that called them never accepted inbound calls, and has been disconnected by the time you call it back anyway.
How could 'valid caller ID' be defined so that robocallers can be identified?