There are generally only stylistic differences.
толстый is close to neutral, however it can sound a bit offensive;
тучный is neutral but rather literal, it's not so commonly used in everyday speech;
жирный sounds offensive.
I learnt Russian in school for many years and I always thought that the adjective is толсто́й for obvious reason (although in Czech we have tlustý, stress on the first sylable). I never noticed the difference.
In Czech the most offensive adjective is vyžraný (člověk) from the verb žráti/vyžrati (pejorative about people) = жрать, probably etymologically related to жирный.