The Jacobian of the discretized equations of motion contains zeros in some rows and columns for all values of the free optimization variables but they are not eliminated from the sparse expression of the full Jacobian. I.e. the Jacobian is treated as a dense block, but it is slightly sparse itself. It may help IPOPT performance or success to also eliminate these always zero values from the output of Problem.jacobian().