What is it in the composition of natural fabrics that cause them to retain smoke odors versus synthetics?
Adsorption is a very complicated phenomenon which involves so many interactions. Smoke has thousands of chemicals too, therefore one cannot pin-point a single cause. It is just like the concept of stains. Some stains on cotton never come off easily, which means that molecular interaction is very strong between the dye in the stain and cotton fiber. As a rough estimate, the -OH groups on cellulose may be providing the hydrogen bonding sites to nitrogen containing aromatic (in a chemical sense) compounds, hence stick for a long time. I am drawing an crude analogy because silica which has plenty of silanols (Si-OH) groups bind amines too strongly.