Integer value needs 2 bytes of memory per field. An unicode text field needs (I think) 2 bytes per defined character length for field. So all interactions (especially indexing) with text fields take more time. It would be not obvious with really small databases, or in case the number of text type foreign keys used in tables is really small, but otherwise this will cause a huge drop in DB performance.
Another bonus of using pairs on numeric id and text name defined in table is, that you can at any time change any of those names in this table, and you get the new name displayed instead of old one everywhere, without any additional changes to your DB.