I'm not entirely pleased about the online only thing, as I do get a lot of service interruptions in my suburban community in Massachusetts, mostly because the lines they're using are 15 years old and just in terrible condition. But anyway, there are some fairly valid reasons why D3 should be online only.
First of all, take a look at Diablo 2. Anyone who played the game probably heard about d2jsp, mousepad, c3p0, etc. The reason all of those programs were able to work was because of the sheer amount of work that was done client-side. Random maps were generated by the client, so all the information was there for maphacks to extract and display everything. Since all the map stuff was client-side, d2jsp and other bots were able to work by interacting with waypoints that were created in the client-side data when the map was formed. If the maps are generated server-side, the server load isn't significant as they're basically just text documents that hold all the information, even if there are a lot of them. Storing that information, the random map generator, and other stuff server-side basically breaks most implementations of hacks and bots, while also allowing Blizzard to actively monitor such programs, rather than them being practiced and perfected offline before being implemented online.
If they did want to have an offline available singleplayer, it would take a massive code overhaul for that singleplayer game, as all the drops, map generation, and everything else would have to be handled client side. Maybe in a future patch they will have it as an option, with a slightly different version of each mechanic so that offline play isn't just a testing ground for improving bots. Whether they think an offline singleplayer is worth the time needed to implement new code though, remains to be seen.