L'ho fatto funzionare e ho pubblicato la risposta qui se nel caso qualcuno avesse bisogno di aiuto in futuro.
Fondamentalmente possiamo fare un semplice where interrogare con @> operatore. E il valore può essere codificato in json con l'e-mail cercata. Di seguito è riportata la query per cercare un'e-mail particolare senza utilizzare whereRaw metodo.
$contacts = Contact::where("emails", '@>', '[' . json_encode(['value' => $query]) . ']')->get();
Spero che aiuti qualcun altro in futuro :)