One major difference I've found with SMPP vs. HTTP APIs is on the inbound side of things - ie. receiving messages on a virtual number. Some aggregators I've used don't pass the UDH (user data header) through in inbound requests so you can't stitch long inbound messages together (this is, in my opinion, the driving force behind Twitters much vaunted 140 character limit - if they'd had an SMPP connection with the UDH in-tact they wouldn't have had to restrict posts to "140 characters reserving 20 characters for the username).
Even with kannel, though, you still need to stitch long messages together manually. I posted my sample implementation for this in PHP to the Kannel lists a few years back:
http://comments.gmane.org/gmane.comp.mobile.kannel.user/1664...
I've been using the same setup for years with no problems.