Hi Anna,
These bugs are quite bad. Poking at it a bit more, there are other shortcomings, like the fact that it can't operate on tensors with label indices. Perhaps IndexCoefficient needs to be rewritten.
For now, here is a very ugly workaround (in the attached NB).
Firstly, IndexCoefficient[] operates differently than the builtin Coefficient[], because IndexCoefficient[] should satisfy the identity
tensor * IndexCoefficient[expression, tensor] == expression.
However the above is not true with Coefficient: Coefficient[x^2, x] is 0, while IndexCoefficient[v[a]v[b], v[a]] is v[b].
IndexCoefficient falls through to Coefficient when the second argument is a scalar. Clearly that is not what we want!
So, that definition needs to be cleared out.
Now, since IndexCoefficient operates correctly on powers of indexed tensors, we can replace a scalar s[] with a temporary product Scalar[v[a]w[-a]] of a vector and 1-form; then extract the IndexCoefficient of v[a]w[-a], and then revert back to the original scalar. Please see the attached example.
This workaround is definitely very ugly, and maybe a sign that IndexCoefficient needs to be rewritten...
L