Ter arrays dentro de arrays é quase sempre uma má ideia por vários motivos. Eu colocaria as campanhas em uma coleção dedicada para que se tornassem documentos de nível superior.
Dito isso, você pode enviar para uma matriz de mensagens de uma campanha específica por meio de:
db.members.update(
{"user_id" : "{1231mjnD-32JIjn-3213}", "campaigns.campaign_id": 3221},
{$push:{"campaigns.$.messages":{"message_id":4213122, "email":"[email protected]"}}}
)