In my view everything about it is better, from the fix to the head-of-line-block problem, delivery of messages not bytes (hallelujah), multiple streams, a much better crc, and the biggest deal is support for multihomed/roaming machines designed in properly, particularly in today’s mobile world, where so very many machines are multihomed because they have 4G and LAN interfaces going simultaneously even if they never move to a completely different LAN. The feature list is long and it is not surprising that it had an obvious goal of being better than TCP in every respect.
One other not-so-obvious thing is that because SCTP has taken all the best recent advances in TCP that apply to transports in general you have all these features guaranteed in SCTP whereas if you are still using TCP you could easily encounter rubbish old servers that are lacking certain important things. This minimum feature guarantee thing is powerful and has been seen in a number of v2.0 technologies: IPv6 and AMD64 being examples that come to mind immediately.
I am concerned about whether or not crappy firewall setups or old evil networking kit or evil ISPs could cause a 1% or 0.1%-case nightmare for an app developer. Because of this I also wonder if it might be an idea for such a developer to use SCTP only over IPv6, if that makes sense in the particular scenario. If you have to test whether SCTP works, then like testing NAT, or firewall busting or analysing firewalls, the cost starts to get so high that you would wonder why on earth you are still thinking about SCTP at all. It might be that if you only use IPv6 then you can be more sure of not encountering any evil, thinking that at least because all the kit will be more modern, but that still does not mean that you cannot possibly have trouble, because there still remains the case of evil policy for firewalls. If you have to use IPv4 too, which is very likely for many applications other than specialist limited-scenario ones, then what do you do? Fall back to TCP anyway, or do (one-off) path testing and then selectively fall back, or what? More code, more cost, more testing and if you have to fall back to TCP then what does that say about your need to use SCTP in the first case? Switching to SCTP-over-UDP would be a great option in my view and possibly then you do not even bother with path testing when using IPv4.