Also, sometimes offine TOASTing is evil :
Say you have a forum, you want the posts table to be CLUSTER'ed on
(topic_id, post_id) so displaying 1 page with 30 posts on it uses 1 seek,
not 30 seeks. But CLUSTER doesn't touch the data that has been pushed
offline in the toast table. So, in that case, it can pay (big time
actually) to disable toasting, store the data inline, and benefit from
cluster.
So basically :
Data that is seldom used or used only in queries returning/examining 1 row
bu otherwise eats cache -> push it away (toast or partition)
Data that is used very often in queries that return/examine lots of rows,
especially if said rows are in sequence (cluster...) -> keep it inline