Both are native R & C++ implementations instead of reticulate-wrappers of python implementations.
Reason to switch.
umap stores the full original dataset used to build the umap in the object returned - unnecessarily blowing out the size of the serialized model. the uwot model structure is much lighter
uwot conveniently makes it easy to return either just the embedding OR the full model
uwot has a dedicated function for adding new data to an existing embedding umap_transform which makes the code clearer (imo) than the reliance on the predict generic and method dispatch.
Both are native R & C++ implementations instead of reticulate-wrappers of python implementations.
Reason to switch.