When configuring tasks or Pipeline Execute snaps, any Snaplex the task creator or the pipeline invoker has access to can be used. As long as the user has read and execute access to the Snaplex, the Snaplex can be used. That is the behaviour in the backend.
The UI adds the additional restriction that for pipelines in a project, the UI shows Snaplexes located in the same project, the project space shared project and the global shared project. The UI will not show up the Snaplexes which are located outside these three locations, since that has lead to confusing results in some scenarios.
For the use cases you mentioned, you would have to ensure that all the projects are in one project space and the Snaplex is located in the shared folder of that project space. That will allow all projects in that project space to access that Snaplex.