With Piccolo, Goku spared him because he wanted a rival to fight, and basically said "Hey I saved the world, you guys can trust me." With Vegeta, he... wanted the same thing, but even then Krillin said "C'mon Goku, this guy isn't going to pull a Piccolo," which... was sorta correct, it took years for Vegeta to truly get to that point.
Freeza, on the other hand, has never been anything except pure irredeemable evil. He doesn't even have evil Vegeta's sense of pride and love of battle, he's just a vain murderous asshole who liked that he could hurt people and they couldn't fight back. Both in the Freeza saga and RoF, Goku comments on how he actually finds it a shame that Freeza is so irreparably rotten, because it means he can never be a true rival to Goku, only a threat to be destroyed. Goku didn't even want to finish his fight with Freeza the first time, he got bored, and when he tried to spare Freeza, it was with pained reluctance rather than enthusiasm like with Piccolo and Vegeta. When Goku thought he had killed Freeza, the look on his face (as in the manga and that RoF bonus scene with Future Trunks) is actually one of regret and almost pity, because he knew that Freeza, for all of the unmatched challenge he provided, couldn't be redeemed.