Okay, when banks cash a check they have no ways of knowing for sure that there are funds in that account. If the check was from their bank, they can easily verify funds. However, if your bank was Bank of America and the check was from Washington Mutual, it is very hard for a bank to verify if there are funds in that WAMU checking account. Banks don't really talk to each other very well, especially with all the privacy regulation red tape out there.
Remember, there is a lot of fraud out there. There are scams where a person would cash a check but the check is fake and run away with the money. Banks have to protect their assets because those assets really belong to their customers and stock holders.
Lets say you are a little older and have a couple of thousand sitting in your checking and savings accounts. You have direct deposit and earn a decent pay check. A bank would consider you a low risk in case the check bounces and they have to collect the funds. But lets flip this and say that you are a college student making okay but not great money. You might have a couple of hundred at the max in both your checking and savings account. Also, you have had a history of being overdrawn on your account for the last year. If you had a check for $4000 and only wanted to deposit 10% of the check, you are considered by the bank at having a high risk. If the check bounces, the bank would have to collect the funds from you. However, you can't afford to pay the bank back in time. This will cause the bank to charge you all sorts of fees and eventually puts you in check system where you can't get any bank account for a long time until you pay back the bank all the money (plus the fees) that you owe. The bank putting a hold on your check protects you and the bank from a big headache in case the check bounces. I know it isn't ideal, but that's the reality of it.
Even though you believe the check is good and have a good knowledge of who wrote the check to you, the bank has no way of verifying that. Banks can only guarantee cashing a large amount of money if it was a government check (say your refund from the IRS). If this is a regular thing and you don't want a headache in the future, have the person directly deposit the money into your account either by wire transfer or electronic transfer. You could also request to have them give you a cashier check instead. The bank may still hold a cashier check, but only for a few days.
If you have further questions, go see your local banker to help you. Also, check cashing places may cash the $4000 check, but they charge a large fee.
Once you have established yourself as a trustworthy customer, you shouldn't have a problem cashing large checks in the future. But, this depends on how much money you have in the bank and how well you manage your account.