I'm an ex-programmer who bought a fairly generic POS system for my store and massaged it to work for me. One of the requirements for the database was a unique ID for each customer. I don't like using arbitrary account numbers because neither my customers nor I could remember them Too many of my customers had the same names, and I didn't like the idea of using "Skurka23" and "Skurka24" for the same reason as account numbers; who could remember which Skurka they were?
But, all of my customers had unique phone numbers, and they could all remember them when I asked. So, that's what I chose to use as the account number. It had nothing to do with marketing, just a form of ID. I liked to track the sales by customer for my own, internal decision making; I really wasn't interested in who they were or what their phone number was, it just didn't help me to have a big number of customersnamed "Cash".
The only type of communications we had with the customers who were willing to give their personal information was safety info or recalls of their purchases (we also tracked all purchases by each customer, including serial numbers, etc), and they always seemed to appreciate that type of communication (for example, we sent everyone a brief explanation of why their propane tank valve design was being changed, and the effective dates, when the OPD valves were introduced).
Also, stores such as TSC often request the phone number sho they can see the areas from which their customers are coming. This helps them determine locations for additional stores. When our Fort Pierce Tractor Supply noted that many of their customers came from Okeechobee, it helped them determine that and Okeechobee store would be economically viable, and they opened one.
With all that said, we still ran into two circumstances where the phone number wouldn't work -- people without phones, and people who refused to give their phone numbers. If it was a small sale, such as a routine propane refill, we set up a customer named "cash" with a phone number of 000-000-0000. All we had to do was type in one "0" and the program would find the cash customer. For the others, if they were willing to give us name and address, we ourselves set up a fake phone number. Invariably, we used "666" as the area code -- out of a demented and slightly warped sense of humor (because, while we never let them know, we really didn't like the customer who had so little trust in us that they wouldn't give us their phone number -- it goes both ways).
We could still find them in the computer, because the program could seach by last name and other fields; it was just a lot more cumbersome and slow because that was not the primary index and involved extra steps.
So, bottom line, yeah, I give my number. No one has ever called me on the phone as a result, so I can't see the big deal. Besides, unless I place myself on the "no solicitation" lists (and I have, both state and federal), having an unlisted number is no protection against solicitation -- the dialing computers just dial all of the numbers in sequence, listed or not.