Each project in JMP has its own globals and namespace listing. This is also true for the non-project part of JMP. So if you create a global:a outside of a project, it won't be visible in any project. And if you create a global:b inside Project01, it won't be visible outside of that project or in any other project. In addition, if you create a namespace "A" outside a project, it won't be visible (by name, as in A:symbol) inside any project. And similar for creating a namespace in a project. This is done to keep projects isolated from each other and from non-projects. And it allows for running multiple copies of the same script across several projects without them colliding with each other even if they use globals.
If you need to communicate across projects or between non-projects and projects, the best way is to the root namespace (::: or As Root syntax). Symbols in this namespace are unique across the running JMP instance.
So, as Craig suggested, you could assign a namespace to a symbol in the root namespace. Then use that namespace by symbol, like As Root(myNsSym):x, instead of by name.
If you only need responses to menu items and buttons, then the suggestion above to delay initialization of the addin until each of these is a good option. Then, the addin will be initialized in each project when it is first used. And you can use a global to check for prior initialization. I've done this for several add-ins in the past. However, it means your start-up and exit scripts need to be pretty bare because you aren't doing much when JMP starts/exits. This also doesn't work if you need something beyond responses to menus or if you need to communicate across projects. In these cases, the root namespace would probably be best.
Finally, you could use the Project OnOpen script or the Workspace Startup script to initialize things as well. See https://www.jmp.com/support/help/en/16.0/index.shtml#page/jmp/write-a-project-on-open-script-2.shtml and https://www.jmp.com/support/help/en/16.0/index.shtml#page/jmp/run-startup-scripts-to-control-workspa... for more information on those. If you already don't do much in your start-up/exit scripts for your addin, you might even just attempt Try(Get Addin("...")<<Unload<<Load) with your addin in one of those scripts.