There are many factors that contribute to protein solubility. To make things simple, let's consider one of the most important determinant for a particular protein's solubility, its electrostatic charge. Protein molecules carry charges according to their amino acid sequence and the aqueous solvent pH they're dissolved in.
Amino acid residues of protein molecules interact predominantly on their surface with water molecules.The functional groups of amino acids and termini determine their charge at a given pH. At neutral pH for instance, aspartic acid and glutamic acid carry a negative charge and arginine and lysine carry negative charges (in addition, other functional groups such the N-terminus and the C-terminus carry charge, for simplicity reasons let's focus on Asp, Glu, Lys and Arg).
The net charge of a protein molecule is the arithmetic average of all charges. The protein net charge primarily depends on the number, identity and location of amino acids and the solvent pH. At a certain solvent pH the protein net charge will be zero - this is called the isoelectric point. Most proteins have their isoelectric point between 5 and 8.5.
What happens when the pH of the solvent becomes more alkaline (or basic)? Lysine and arginine residues lose their positive charge and become neutral at pH 12. If the pH is made more acidic, however, aspartic acid and glutamic acid shed their negative charge and become neutral below a pH of 4. Since lysine and arginine remain negatively charged the net charge is negative.
To estimate the overall charge of a protein molecule starting from sequence, the pKa of the functional groups are used. This can be done for different pH values to create a theoretical titration curve
A charged protein surface, with an overall negative or positive charge, does two things:
1. it creates preferable interactions with water molecules (because they are dipolar in nature),
2. like-charged protein molecules repel each other.

Figure 1. Electrostatic repulsion of negatively charged protein molecules. Note that this is a very simplistic model, lacking detail such as hydration layers, charge distribution, polarizability etc.
Lack of a net charge fosters interactions between protein molecules rather than between protein and water molecules, making protein aggregation or protein precipitation more likely. As a result, highly charged proteins tend to remain soluble whereas proteins with little or no net charge can aggregate and precipitate out of solution.
The comparison of isoelectric point calculation with actual solubility data of insulin shows that this simple electrostatic model is useful in addressing a simple practical question as to which pH to use when keeping a given protein in solution. Once the isoelectric point pI is determined, back off by one or two pH units to attain solubility and avoid protein aggregation.
Request product information for OptiSol Protein Solubility Screening Kit
Also see: Protein Solubilization