To solve this optimization problem, we need to define the decision variables, the objective function, and the constraints. 

Let's denote:
- $x_b$ as the number of beef burritos made,
- $x_p$ as the number of pork burritos made.

The objective is to maximize profit, given by $3.5x_b + 2.1x_p$.

Constraints are:
1. Total burritos made do not exceed 100: $x_b + x_p \leq 100$
2. At least 20 beef burritos must be sold: $x_b \geq 20$
3. At least 30 pork burritos must be sold: $x_p \geq 30$
4. No more than 70 beef burritos can be made: $x_b \leq 70$
5. No more than 80 pork burritos can be made: $x_p \leq 80$

All variables are non-negative since the number of burritos cannot be negative.

Now, let's translate this problem into Gurobi code in Python:

```python
from gurobipy import *

# Create a model
m = Model("Burrito_Optimization")

# Define decision variables
x_b = m.addVar(lb=20, ub=70, vtype=GRB.INTEGER, name="beef_burritos")
x_p = m.addVar(lb=30, ub=80, vtype=GRB.INTEGER, name="pork_burritos")

# Define the objective function
m.setObjective(3.5*x_b + 2.1*x_p, GRB.MAXIMIZE)

# Add constraints
m.addConstr(x_b + x_p <= 100, "total_burritos_constraint")

# Optimize model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Beef burritos: {x_b.x}")
    print(f"Pork burritos: {x_p.x}")
    print(f"Maximum profit: {m.objVal}")
else:
    print("No optimal solution found")
```