internet bandwidth, if you are on 4g and limited, random or low difficulty can be costly.
simplest and best answer.
manual diff is basically your way of saying my machine should be calculating this fast, so always get a workunit this size. This is really only beneficial if there is significant delay to the stratum server, or if you get disconnected frequently and need to "ramp back up" to the proper diff.
Here is how I understand it. I might be simplifying it.
Let's say you were trying to empty a pool with a bucket of water and each time you filled the bucket with a random amount of water. Sometimes too little and it was too easy for you to lift so you were using more energy lifting the bucket than lifting the water in the bucket. Sometimes too much water, still not too much for the bucket, but almost too much for you to lift that you struggled sooo much that you might have been able to lift 1/2 as much 2 times or 3 times in the same amount of time... get it...? So static diff allows you to set the amount of water just right for your rig. I've spoken to a few pool operators and they have all told me to set it per the total hash rate of the rig that the mining software reports, not the pool. It won't flatten your hash rate on the pool, but your average hash rate should be higher.
Downside of the work being too easy is that you spend more time sending results and receiving work than doing work, or at least your work to send/receive time is lower.
Downside of the work being to hard is that you might not finish the work before the round is over and the network moves on to the next block. This can not be avoided 100%, but it can be reduced.
Good analogy =) Too high of a diff can bite, but too low of a diff could cost you in overall hashrate due to constant low diff spam. Some stratums will cap your calced hashrate based on the excessive low diff shares; or flat out disconnect/blacklist you for share spam.