It's an issue of transaction size, with "size" meaning bytes not number of coins. What is happening is you are receiving a lot of little payments (probably from a pool). To spend each of those payments requires some number of bytes in your outgoing transaction, and those are size limited.
The fix for this is for pools to wait for some minimum before paying out, but the pool code is brand new and this has not been implemented.
As you say the workaround is to send several smaller chunks. If you send these chunks to another wallet, that second wallet will be able to make larger payments without running into the size limit.