Направих го работещо и публикувам отговора тук, ако някой има нужда от помощ в бъдеще.
По принцип можем да направим просто where заявка с @> оператор. И стойността може да бъде json кодирана с търсения имейл. Следва заявката за търсене на определен имейл без използване на whereRaw метод.
$contacts = Contact::where("emails", '@>', '[' . json_encode(['value' => $query]) . ']')->get();
Надявам се да помогне на някой друг в бъдеще :)