For me, if I know its a number that Im storing, Id rather use a bigint than varchar. Im thinking ahead to when this is read out - if its varchar, theres a chance someone will put the letter "a" out there. I hate writing conversion programs for older systems where everything was a varchar, even dates, and you get those weird anomalies that wont convert right.
If this is a number that "looks like" a number but isnt (like an SSN), Id definitely store as varchar.
-ner