El principal problema es que necesita revisar toda la colección (en esta situación, no puede usar los índices para acelerar el proceso).
Puedes probar este código (tiene menos funcionamiento que el tuyo):
db.getCollection('User').aggregate([
{
$unwind: "$UserSubscriptions"
},
{
$group: {
_id:"$UserSubscriptions.Subscription.Publication.Code",
users: {$addToSet: "$_id"}
}
},
{
$project: {"PublicationCode": "$_id", "Count": {$size: "$users"}}
}
])