yes, zip codes are best stored as strings since mathematical operations won't be used on the data...plus having it as a string will support non US postal codes that contain letters.
Depending on your usage, since zip codes are always 5 characters long, its sometimes better to use char(5)...