The main reasons are that it can allow you to optimize and customize your programs.
Most distributions are geared toward a broad range of computing hardware, which means that their pre-compiled programs cannot be optimized.
When you use a pre-compiled program, somebody else decided for you which features are enabled and disabled and how the program behaves in general. Compiling the software yourself allows you to configure it your own way, ensuring that they have a custom fit for you.