In terms of architecture, React Native and NativeScript are quite different.
NativeScript is simpler to understand. It's basically the Java/Android API or the ObjC/iOS API wrapped up in a JS API. Note that they aim for 100% parity between the native platform APIs and the corresponding JS clone API. They do not attempt to abstract the native API before exposing it to JS, i.e, every single Java class and method should have an equivalent JS binding. Under the hood they basically wrote a JS-to-Java/ObjC bridge that handles data marshalling, garbage collection integration, etc. All this bridging work comes at a performance cost, although very minor. Also, everything happens on the UI thread and there's no transparent thread support yet, so the UI can get laggy if there's a lot of processing to do. Angular has been integrated into NativeScript so now it's possible to build Angular mobile apps that are driven by native UI elements.
React Native takes a more involved approach. First of all, there is no direct mapping from native to JS APIs, i.e, they do not attempt to make every class or method in the native API directly callable from JS land. Instead, they abstract the view system of the platform to something that makes sense for React. On both Android and iOS there is native code (in Java and ObjC) that wrap the native View objects and allows the React framework (JS code) to control them. All the JS (including the React framework code and the user code) runs in a separate thread from the UI. The JS side and the native side communicate by exchanging serialisable messages, which can be intelligently batched to minimise the JS-to-native call overhead. The performance critical stuff like computing layout and animations can be handled on the native side while the high level UI logic nd the business logic can be written in JavaScript. Users can even write their own native modules to interface with native code from JS.
Unlike NativeScript which basically says "JS all the things" and exposes the entire native APIs in JS, RN builds a thin abstraction over the platform's native UI system that does all the performance-critical low-level stuff in native and is driven by the high-level JS code. Of course, this means that React Native does not give you access to the low-level details of the UI and forces the React way of doing things on you, but that's kind of the point. Personally, I prefer React Native because I think it has a better architecture and there is a lot of community momentum behind it and it has already been demonstrated to be a very capable solution to build performance UIs in JavaScript.