Over the last 3 years I've built 2 separate occassionally connected smart clients.
I've found that adding 'occassionally connected' multiplies an applications complexity (and development time ) by about 3 or 4 times. So it is a very expensive feature to add.
But there are solid business cases for these apps as I'm sure there are for many systems. One was for engineers on the road who often go to client sites where (for whatever reason, security being one reason sometimes) their wireless connection does not work. The user still wants to continue using the system just like they were connected and then have it effortlessly (on their part) synchronize itself once a connection becomes available.
The second app will either be used on a LAN or will have no connection at all, until the user returns 'to the office'.
From a personal perspective I love the idea that with or without an active connection I can continue to 'do my work', indeed even if the connection drops out half way through an activity everything still works and I won't lose any of my data.
Acheiving this seamless connected -> disconnected -> connected etc scenario takes ALOT of work and testing so there must be a very strong business case.
And finally, I think we will never be able to assume that there will always be an internet connection. Whether it be a hardware or service provider failure or some active security blocking connections, at some point in time your users will be in disconnected mode.