In larger programming environments, where the entire application is not created by a single developer, many of the programming tasks are broken into separate tiers. Separation of these tiers makes maintenance and expansion of an application easier, and allows for the development of each tier to fall to a programmer who is expert in that programming arena. There is no way a modern application developer can be an expert, or even relatively fluent, in all aspects of development, so teams of developers are essential. There are often database programmers, network programmers, and graphic designers involved in a project, each of whom may have little or no idea about the other's job.
Another reason why n-tier architecture is so prevalent is that modern applications have to adapt to changing conditions. A corporate merger may mean a change of database, new business rules, or a new design for the end-user interface. It is far easier to change these aspects if they are separated...