To solve this optimization problem, we first need to define the decision variables and the objective function. Let's denote the number of round watches made by team A as \(x\) and the number of square watches made by team B as \(y\).

The objective is to maximize profit. Given that the profit per round watch is $1000 and the profit per square watch is $1250, the total profit \(P\) can be represented as:
\[ P = 1000x + 1250y \]

We have constraints based on the production capacity of each team and the quality checking capacity of the senior watchmaker:
1. Team A (round watches) can make at most 5 watches a day: \( x \leq 5 \)
2. Team B (square watches) can make at most 6 watches a day: \( y \leq 6 \)
3. The senior watchmaker can check at most 8 watches in total a day: \( x + y \leq 8 \)

Additionally, the number of watches cannot be negative, so we have:
\[ x \geq 0 \]
\[ y \geq 0 \]

Since this is a linear programming problem with non-negativity constraints and upper bounds on variables, it fits well into what Gurobi can solve efficiently.

Here's how you could express this in Gurobi using Python:

```python
from gurobipy import *

# Create a new model
m = Model("Watch_Problem")

# Define the decision variables
x = m.addVar(lb=0, ub=5, vtype=GRB.INTEGER, name="round_watches")
y = m.addVar(lb=0, ub=6, vtype=GRB.INTEGER, name="square_watches")

# Set the objective function to maximize profit
m.setObjective(1000*x + 1250*y, GRB.MAXIMIZE)

# Add constraints
m.addConstr(x <= 5, "Team_A_Capacity")
m.addConstr(y <= 6, "Team_B_Capacity")
m.addConstr(x + y <= 8, "Quality_Checking_Capacity")

# Optimize the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Round watches: {x.x}")
    print(f"Square watches: {y.x}")
    print(f"Total profit: ${1000*x.x + 1250*y.x}")
else:
    print("No optimal solution found")
```