Seems to me the devs are smart enough to figure out a way that doesn't involve secretly stealing users change, no matter how small.
Couldn't they use some client setting for a "change address" to accumulate change into? Or something similar, as I'm not sure of the internal client mechanics. Or perhaps every X number of transactions the client would have to create a "payment to yourself" to combine bitdust.
I just think that if BitCoin wants wide acceptance these tricky little behaviors will have to be more transparent and simpler to understand. Disappearing fractions of coins will create a shitstorm of bad press, and when proponents commonly talk of 8 digit divisibility and free transactions it's very misleading when amounts under 2 digits can "randomly" disappear (which is how this looks to typical users).
A "change address" would do nothing useful except compromise privacy— bitcoin tracks transactions not balances.
You're seriously overblowing "a shitstorm of bad press". Did you know that some large US chains systematically incorrectly round sales tax? E.g. they always round up, and due to some strange coincidence their prices are such that they almost always overcharge the customer by .9 cents? Yet it's never made the news.
In any case, one way of dealing with this would be for the coin selection logic to add more input to prevent the change from being smaller than 0.01, sort of like your "payment to yourself" but happening at the time of the transaction to prevent the dust from being created in the first place. Of course, this would require you to have extra inputs in your wallet to begin with, and I'd be willing to be that anyone noticing bitdust lost is running an empty wallet.
E.g.
(0) use the fewest inputs to sum to the output value (plus any desired or required tx fee) exactly
if that fails
(1) use the smallest inputs that sum to at least output+fees+0.01
if that fails
(2) use the smallest inputs that sum to outputs+fees and give
the dust up as additional fees
One of the crappy things about this however, is that the dust is still bad for your privacy— it tags which side of the txn was the change quite distinctly. E.g. if you have input 3.0123456, and you redeem it into {1.0, 2.0123456} then I know with pretty high confidence that you just spent 1 BTC and that the address that 2.0123456 went to was also yours. This is a reason that it's good to avoid getting dusty inputs in your wallet in the first place. It's like a marked bill.