Captain's log, stardate d75.y38/AB
My general take is:
Use yarn workspaces if you're building something with several packages (like a big application) but, if you intend to publish that packages into a registry (like a library or a framework) use lerna instead.
At development time, you have to keep up to date the dependencies of each module with each other in order to "see" the changes. That's what yarn workspace and lerna do. In short, they put symlinks inside node_modules, so when you modify a package, the dependent packages can see it.
But there's another problem: when a package A depends on a package B that increases its version number (because it's modified), then package A should change the version number, too. Coordinating several changing version numbers is hard, and that's what lerna is designed for.
Happy monorepo hacking!