Very astute question! The answer is number 2. You want to put your boolean in your trigger where the class is called from. You'll need a trigger utility class to hold the boolean. This is a large part of why trigger platforms are so useful, particularly ones that have a "trigger main" that acts as a distribution class that follows the logic of a regular base trigger from which your helper classes are called.

Example of Utility class:

    Public class TrggrUtility{
    
       public static boolean RunOnce = False;
    
    }

Test inside of trigger:

    If(!TrggrUtility.RunOnce) 
    {
       // do... call method
       TrggrUtility.RunOnce = true;
    
    }else{
    
      // exit trigger or code section
    
    }