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

Let's denote:
- $x$ as the number of policeman costumes,
- $y$ as the number of fireman costumes.

The objective is to maximize profit. The profit per policeman costume is $8, and the profit per fireman costume is $10. Therefore, the total profit can be represented by the equation $8x + 10y$.

There are two main constraints:
1. Budget constraint: The store has a budget of $3000. Each policeman costume costs $10, and each fireman costume costs $15. This gives us the inequality $10x + 15y \leq 3000$.
2. Demand constraint: The monthly demand for both costumes will not exceed 280. This translates to $x + y \leq 280$.

Additionally, we should consider non-negativity constraints since the number of costumes cannot be negative:
- $x \geq 0$
- $y \geq 0$

Given these definitions and constraints, we can formulate the optimization problem as follows:

Maximize: $8x + 10y$
Subject to:
- $10x + 15y \leq 3000$ (Budget constraint)
- $x + y \leq 280$ (Demand constraint)
- $x \geq 0$ (Non-negativity constraint for policeman costumes)
- $y \geq 0$ (Non-negativity constraint for fireman costumes)

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

```python
from gurobipy import *

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

# Define the decision variables
x = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="policeman_costumes")
y = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="fireman_costumes")

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

# Add constraints
m.addConstr(10*x + 15*y <= 3000, "budget_constraint")
m.addConstr(x + y <= 280, "demand_constraint")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Number of policeman costumes: {x.x}")
    print(f"Number of fireman costumes: {y.x}")
    print(f"Maximum profit: {m.objVal}")
else:
    print("No optimal solution found")

```