Most likely from Common Lisp due to links between R and Lisp. In CL double colon lets you access unexported symbols from a package, while single colon accesses only the exported ones

Oh I think you're right and both took it from Common Lisp, which largely predates namespaces in C++ and R.