This separation is a feature, not a bug. SMS and IP chat have different enough semantics that trying to abstract over them will leak.
In my example, I was using iMessage and it captured my SMS in the same UI as IP chat. Then I changed to an Android phone, and my SMS would not arrive on that phone -- same #, same carrier. The issue was Apple's arrangement with the telco, and it required a support call to get that magic undone. Took days.
SMS and IP chat are different. The former is device-to-device, the later is user-to-user. The former is fire-and-forget, the latter has presence. Abstracting over these is a bad temptation.
That said, Project Fi actually gets it right. It make SMS and IP chat transport-agnostic, but at the network level, not papered over in the UI. It fulfills the promise.