Translation:Mohamed's restaurant is expensive but good.
Actually both words can be used to note a kind person. I can say شخص طيب (šaxcun Tayyib) or شخص لطيف (šaxcun laTíf) - both mean kind person.
However, when I think about it, I think somewhat in my subconscious mind, the two types of "kind" here are different. I would say (and this is my own impression on the usage of these two words) is that طيب (Tayyib) is used to note a kind person in treatment to others, as opposed to (cruel). Meanwhile, لطيف (laTíf) I feel it as it means "kind" in a way, someone you enjoy talking to or dealing with (not necessarily opposing the adjective cruel). Maybe "gentle" is the word that fits here? Hope this is clear - but generally speaking, I've seen these 2 words used interchangeably to note a kind person.
جيّدmeans simply "good"
طيّب on the other hand can fill several meanings, including: delicious, kind (person), good, fine. This word has a sense of enjoyment in it.
If you say طعام جيد (Ta3ámun jayyid: good food) it simply means the food is good in terms of quality or the way it is cooked for example (e.g. carrot is a good food for eye's health). But when you say طعام طيّب (Ta3ámun Tayyib) here the food has a good quality in it with sensation of enjoyment (in smell and taste).