To solve the optimization problem described, we first need to translate the natural language description into a symbolic representation. This involves defining variables for the quantities of interest (sofas and kitchen cabinets produced), formulating the objective function based on these variables, and then listing the constraints that limit the production.

Let's define:
- \(x_1\) as the number of sofas produced
- \(x_2\) as the number of kitchen cabinets produced

The objective function, which represents the total profit, can be formulated as:
\[400x_1 + 1200x_2\]

Since each sofa requires approximately 3 gallons of lacquer and each kitchen cabinet requires 10 gallons of lacquer, and there are only 100 gallons available, we have the constraint:
\[3x_1 + 10x_2 \leq 100\]

For the high-quality oak, with 10 lengths required for each sofa and 24 lengths for each kitchen cabinet, and 300 lengths available, we get:
\[10x_1 + 24x_2 \leq 300\]

Additionally, \(x_1\) and \(x_2\) must be non-negative since they represent quantities of products.

The symbolic representation in JSON format is:

```json
{
    'sym_variables': [('x1', 'sofas'), ('x2', 'kitchen cabinets')], 
    'objective_function': '400*x1 + 1200*x2', 
    'constraints': ['3*x1 + 10*x2 <= 100', '10*x1 + 24*x2 <= 300', 'x1 >= 0', 'x2 >= 0']
}
```

Now, let's implement this optimization problem using Gurobi in Python:

```python
from gurobipy import *

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

# Define the variables
x1 = m.addVar(name="sofas", lb=0)
x2 = m.addVar(name="kitchen_cabinets", lb=0)

# Set the objective function
m.setObjective(400*x1 + 1200*x2, GRB.MAXIMIZE)

# Add constraints
m.addConstr(3*x1 + 10*x2 <= 100, name="lacquer_constraint")
m.addConstr(10*x1 + 24*x2 <= 300, name="oak_constraint")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Sofas to produce: {x1.x}")
    print(f"Kitchen cabinets to produce: {x2.x}")
    print(f"Maximum profit: ${400*x1.x + 1200*x2.x}")
else:
    print("No optimal solution found.")
```