cat tmp/log | jq '. | [(.timestamp | strptime("%Y-%m-%dT%H:%M:%sZ")), (.timestamp | try strptime("%Y-%m-%dT%H:%M:%s.000Z") catch . + " hoge"), null] | first(.[] | arrays)'
各行 → JSONオブジェクト → [timestampを一つ目の形式でパースした結果, 2つ目の形式でパースした結果] → エラーでない(=arrayである)最初の値
というように変換するところがポイント。