When you start a new job you usually sign a written contract. But this is not the most important contract you are entering into.
You have also agreed to a social contract with the line manager who hired you. You have been hired to accomplish a certain task, or take on a certain set of responsibilities.
If you leave that company before finishing the task, or before the line manager has had a decent return on training you for the position then, you have broken that “contract” with your line manager.
Breaking this contract is what makes people perceive you as being a “jumpy” employee. They fear that the cost of hiring you may exceed the benefits.
You can move jobs every year, but if you have completed your social contract every time, a new employer will not perceive too much risk in hiring you.