Acho que vai muito do escopo do projeto.
Já trabalhei com esses que estão na sua lista (o último é viável em momentos de livre espontânea pressão haha)
Vou opinar em alguns deles, na qual sou mais familiarizado.
Creio que a decisão fique muito preso ao contexto e escopo da aplicação, então digamos que o escopo seja pequeno, um projeto simples, nesse caso creio que a lib se encaixe bem.
Mas psso dizer que, lib dependendo do escopo, fica bem trabalhoso de se manter.
Monorepo entraria quando centralizar apenas em lib fosse inviável.
Microservicos seria algo que Monorepo já não resolvesse.
Vale lembrar que um projeto pode ter todos esses ao mesmo tempo, pois se é um projeto grande, as vezes é melhor ter tudo separado e organizado (cada um no seu próprio contexto)
É sempre bom levar em consideração o quão trabalhoso vai ser manter a lib, monorepo, API microserviços etc...Acho que usar o necessário e ir mudando com o tempo seja mais viável que adotar um monorepo ou API logo de primeira.