Во-первых, элементы реактивного программирования в андроиде были и есть. Вспомните о DataSetObserver.
Если вы современный разработчик, то используя RecyclerView, создаёте для него адаптер содержащий имплементацию этого интерфейса, а значит поток данных управляет выполнение программы - это элементы Rx.
Во-вторых, когда вы обрабатываете данные, хочется оперативно знать об их изменении, здесь реакт на своём месте. Но, часто из Rx пытаются создать двухстороннюю связь модель-представление, а это нарушает принципы MVC.
Об асинхронности. Java изначально многонитевый язык. Вы можете создавать нити сколько угодно и где угодно. И не забывайте Service - не асинхронен!