This isn't my field at all so I could be wildly off base here, but it seems like Skype does a lot better in the ugly, consumer, ad-hoc real world using TCP. It feels like this is only becoming an even bigger deal in an unpredictable, soupy carrier grade NAT world of IPv4 exhaustion, or do solutions like STUN and ICE hold up? Are there any IETF type standards tracks that take a Skype like approach and support unmanaged mobility, or are we stuck until IPv6 has a significant presence?
It's not about the protocol construction really. SIP is ok and should deal with most NAT problems with ICE support.
Simply because the SIP protocol looks simple and is easy to inspect... a lot of hardware/software will get it wrong. And I mean wrong like not implementing some feature on the phone thus bringing the common supported feature list down, implementing ICE in a wrong way then dropping the product support, breaking basic SIP transactions in a way that the phone doesn't even work without a NAT, etc.
Then router producers come in saying - we're doing home routers - let's help and solve it by doing SIP-ALG and active rewriting on our side. And they get it wrong again. And then they don't think of implementing a way to disable the SIP-ALG (looking at you speedtouch).
All the protocols are there. As long as you stick to one single manufacturer, it's ok. As long as you don't need custom features, it's ok. It's when you want to be good to everyone and support everything - then SIP networks fail because you simply cannot support everything at the same time.
Noone tries to analyse Skype and they control all the clients and servers. Whatever problems they create - they can solve. That's why they do better in many cases. Because you can't even "try" to fix their traffic.