Imagine I am a solo baker with 1 roll (10k XTZ), as a rough estimate given the current number of active rolls I should earn around 6.5 XTZ (0.065%) per cycle, let's assume for a moment that is static and not variable, i.e I will receive exactly 0.065% every cycle.
Now as the rewards start being paid out they will not be enough to earn me another roll, therefore my baking rights will still correspond to 1 roll and so my rewards will remain at 6.5 XTZ per cycle. Since my rewards are too small it looks like I do not benefit from compounding unless I delegate that 6.5 to another baker.
However the act of delegating requires a transaction to move the 6.5 XTZ from my baking tz1 account to a KT1 account which incurs a transaction fee. It seems like the minimum transaction fee is 0.001272mtz so let's assume that is what we must pay.
If we assume a 10% fee for any rewards from delegation (along with a static 6.5% return as per my own baker), my 6.5 XTZ reward will earn
(6.5 - .001272) * .00065 * (1 - 0.10) = 0.00380175588 xtz. let's assume the baker absorbs the transaction fee.
So it looks like it makes sense to transfer the excess XTZ after every cycle since .00380 > .001272. Even if the baker passes on the transaction fee it should be worthwhile to do.
Now we know that baking is not as linear as that, some cycles I will bake more or less, so let's assume a bad scenario where I only endorse a single block for 2 XTZ reward. Now in this scenario if I transfer the excess straight away my expected reward is
(2 - .001272) * .00065 * (1 - 0.10) = 0.001169 which is less than the transaction fee so as I understand it you are better off waiting until the next cycles rewards before moving the money to you KT1 account.
Are my calculations correct? Is it as simple as checking whether your expected rewards are greater than the transaction fee to ensure you are receiving the optimal return or is there anything I have missed?