これを以下のように変更することをお勧めします。
.order("COALESCE(CAST(custom_fields.value AS timestamp), custom_fields.value) DESC")
可読性向上のためです。
sortDate でソートし、それが存在しない場合は createdAt を使用します。すべて降順です。クエリは要求通りデータを返しており、2020 年は 2011 年の 2 位よりも「大きい」ためです。
NULL を最後にしたい場合は、以下のようにします。
.order("CAST(custom_fields.value AS timestamp) DESC NULLS LAST")