To solve the given optimization problem, we need to maximize the profit from producing small and large plush toys under the constraints of available cotton and worker time. Let's denote the number of small plush toys as \(x\) and the number of large plush toys as \(y\).

The objective function to maximize is based on the profits per toy: $3 for a small plush and $5 for a large plush, so we have:
\[ \text{Maximize:} \quad 3x + 5y \]

The constraints are based on the available resources:
1. Cotton constraint: Each small plush requires 5 units of cotton, and each large plush requires 8 units of cotton. With 250 units of cotton available, we have:
\[ 5x + 8y \leq 250 \]
2. Worker time constraint: Each small plush requires 10 minutes of worker time, and each large plush requires 12 minutes of worker time. With 500 minutes of worker time available, we have:
\[ 10x + 12y \leq 500 \]
3. Non-negativity constraints: The number of plush toys cannot be negative, so:
\[ x \geq 0 \]
\[ y \geq 0 \]

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

```python
from gurobipy import *

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

# Define variables
x = m.addVar(vtype=GRB.CONTINUOUS, name="small_plush", lb=0)
y = m.addVar(vtype=GRB.CONTINUOUS, name="large_plush", lb=0)

# Set the objective function
m.setObjective(3*x + 5*y, GRB.MAXIMIZE)

# Add constraints
m.addConstr(5*x + 8*y <= 250, "cotton_constraint")
m.addConstr(10*x + 12*y <= 500, "worker_time_constraint")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Small plush toys: {x.x}")
    print(f"Large plush toys: {y.x}")
    print(f"Maximum profit: {m.objVal}")
else:
    print("No optimal solution found")
```