I implemented a visual-inertial navigation based on the algorithm called MSCKF. It would be really interesting to know what kind of algorithm they are using. They mentioned state propagation in the article. This might indicate they are using an algorithm based on extended kalman filter.
It takes quite some care to make those algorithms robust. Even when you run in an environment covered with diverse visual features. The state divergence is a real thing which essentially means the copter is falling from the sky (Do they call it like that on Mars?).