Cook bacon in a large skillet over medium heat until crispy, about 6-8 minutes. Transfer to a paper towel-lined plate to drain.
Butter one side of each bread slice. Spread mayonnaise on the unbuttered sides.
Place 2 slices of bread butter-side down in a clean skillet over medium heat. Top each with 2 slices of cheese, 4 slices of bacon, and optional tomato and lettuce.
Place remaining bread slices on top, butter-side up. Cook until golden brown on the bottom, about 3-4 minutes.
Carefully flip sandwiches and cook until the second side is golden and cheese is melted, another 3-4 minutes. Slice in half and serve hot.