A single trigger on Contact that handles both after update and before update events, utilizing helper classes for each logic set, is the most optimal implementation. It centralizes the logic for maintaining primary contacts and normalizing last names while allowing for clear separation of concerns through helper classes.References: Apex Developer Guide - Triggers