Until just a year or two ago, there was no way to validate a credit card without authorizing a charge to it for a dollar amount. Some backend processing networks still don't support zero-dollar authorizations. The reason every site that needed to validate a credit card charged $1 to it was because that was the only way to know the card presented is real.
I thought that's what I said, and also what the parent said. I was refuting that the reason sites authorize $1 instead of $0 to validate a card was to stop spam/scammers -- that's a valid reason, but the root reason it was always $1 was because $0 authorizations weren't possible.