I don't get what the difference between Facebook and Twitter even is supposed to be. One for people you know and one for people you don't? You can solve that in something like Mastodon by just having two independent content feeds (and you can already set that up).
It probably used to be character limit, but again Twitter has already doubled theirs and Mastodon's is already 500 characters.
That and the main developer of Mastodon is working on media features to make it work better as an Instagram replacement as well.
The real secret sauce is that the Fediverse and AcitivtyPub means if you want a Facebook like experience you can use Diaspora and still friend / share / communicate with people on a Mastodon instance. Different programs can emerge as fews into this data graph but its still the same fundamental primitives (soon to be a web standard) data types.
Speaking of Riot, I'm hopeful the developers will look into integrating it better into said fediverse. It should probably at least support some means for Mastodon hosts to easily spin up a Matrix server at their Mastodon domain with no friction and the same account database. It will probably take Matrix protocol revisions to make that work, though.
Probably one of the important killer but missing features of Matrix will be the ability to integrate into websites the way Facebook messenger does, so you can have the social media site with the popup chat frames.
The only missing feature in my mind after all that is something akin to Facebook / reddit comment threads / disquis / discourse. So that non-social media sites can integrate social media comment sections into their media that either autogenerate threads, repost to a Mastodon instance / on Diaspora and let Fediverse commentors just comment right there on the page.