Il motivo principale è che gli ObjectID sono 12 byte, mentre una stringa equivalente è 24 byte. Su una raccolta abbastanza grande, quei 12 byte salvati per ID si sommano davvero! Questi ID significano anche meno byte trasferiti via cavo durante la lettura o la scrittura del documento.
Inoltre, alcuni ODM prevedono ObjectID per riferimenti a documenti esterni e possono essere confusi dalle versioni stringa dell'ID. Tuttavia, non ho abbastanza familiarità con gli ODM PHP per dire se questo potrebbe interessarti in modo specifico.
Per quanto riguarda le cose dell'API, tuttavia, dovresti probabilmente eseguire la normalizzazione dei dati prima di inviarli comunque al client, perché poiché Mongo non applica uno schema, puoi avere letteralmente qualsiasi tipo di dati in un determinato campo, quindi potresti disponi di alcuni documenti con ID stringa e altri con ID BSON e la tua API li invierà felicemente entrambi al client, ma l'uno o l'altro potrebbero causare rotture. In questo caso particolare, dovresti utilizzare BSON ObjectID nei tuoi documenti e poi eseguirne il cast in stringhe nell'output dell'API.