Almost always the same way: one plugin at a time. Something is needed, a plugin is installed, it works, and nobody removes it when the need passes. Two years later the shop is carrying thirty of them, several doing overlapping jobs, a few no longer maintained by whoever wrote them, and every one of them a thing that can break when WordPress updates.
The result is a shop that is slow for reasons nobody can name and fragile in ways nobody can predict. Sorting it out is painstaking but pays for itself, because a faster shop sells more and a simpler one costs less to keep running.