Why is body frame angular velocity nonzero?

Great question; I remember being so confused by this when I first took analytic mechanics.

The components of the angular velocity "in the body frame" aren't zero because when one writes these components, one isn't referring to measurements of the motions of the particles in the body frame (because, of course, the particles are stationary in this frame). Instead, one is referring to angular velocity as measured in an inertial frame but whose components have simply been written with respect to a time-varying basis that is rotating with the body.

In practice, we make measurements of the positions $\mathbf x_i(t)= (x_i(t),y_i(t),z_i(t))$ of the particles in an inertial frame. Then, we note that for a rigid body (let's consider pure rotation for simplicity), the position of each particle $i$ satisfies \begin{align} \mathbf x_i(t) = R(t) \mathbf x_i(0) \end{align} for some time-dependent rotation $R(t)$. Then we compute $\boldsymbol\omega(t) = (\omega^x(t),\omega^y(t),\omega^z(t))$ in the standard way in terms of $R(t)$. To see how this is done in detail, see, for example

https://physics.stackexchange.com/a/74014/19976

Once we have $\boldsymbol\omega$, we can write its components with respect to any basis we like. If we write it in the standard ordered basis $\{\mathbf e_i\}$, then we'll just get $\omega_x(t)$ as its components. If we write it in some basis $\{\mathbf e_{i,B}(t)\}$ that is rotating with the body (like one that points along the principal axes of the body) then we get different components $\omega^i_B(t)$, and these are the body components.

Main Point Reiterated. Angular velocity is being measured with respect to an inertial frame, but its components can be taken with respect to any basis we wish such as one rotating with the body.