Ah ok, c'est sûrement l'option core.worktree qui me manquait ^^ Du coup, je peux en effet abandonner le type « git » pour les dépôts locaux.
En revanche, après une courte réflexion (bon, ok, une nuit complète

) : je ne peux pas créer l'archive côté local. Je veux pouvoir stocker d'un côté les fichiers dans un gitlab distant, d'un autre faire des archives à échéances régulières. Ça impose que la création d'archive soit faite par le remote repository.
L'autre possibilité serait de faire un truc en trois couches : stockage local | stockage distant | transport. Cela reviendrait à ajouter une nouvelle section (optionnelle) dans le remote repository, afin d'éventuellement transformer les fichiers qui seront envoyés. Ça ne serait pas trop coûteux, et la valeur par défaut serait une fonction identité.