I think it has to do with the way the Haskell packages are disturbed. So if you installed the pandoc from extra
repository, and there was an update for any of the Haskell packages that pandoc depended on, then pandoc will have to be updated again. Meaning, instead of pandoc forcing Haskell updates, it is the other way around.
If you only use pandoc and don’t normally program in Haskell, check out pandoc-bin. This way you will only get updates for pandoc itself and its dependencies won’t force an update.
LSP maybe portable with it’s config if the LSP themselves are independent. Checkout Mason which seems to make it easier to bundle neovim and “portable” LSP. There was another project similar to Mason with some more features, but I forgot it’s name. So search around to see if that fits your requirements.