I have worked with a couple of systems that used very course grained sharding at the application level. I did not notice these drawbacks.  I have not worked with one that did auto sharding on the back end, that might be trickier.