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
}