Because PartialOrd is cheating a bit, by mathematical standards.
Abstractly speaking, a mathematical structure is defined by two things: some operations and some axioms associated to those operations. In a programming language, we can define traits (or typeclasses, or whatever your favorite language calls them) which embody mathematical structures. We define the trait to support certain operations and simply trust that the programmer follows the axioms.
Total orderings (i.e. Ord) and partial orderings (i.e. PartialOrd) are usually modeled using a single operation: <=. And the difference in the two structures is based on what properties we require of <=. Likewise, partial equivalence relations (PartialEq) and equivalence relations (Eq) are defined in terms of ==, and the two differ only in what properties.
If we were to define PartialOrd and Ord in this way in Rust, it would look something like (I'm omitting the RHS type argument for simplicity reasons)
trait PartialOrd : PartialEq {
fn less_or_equal(self, other: Self) -> bool;
}
trait Ord : PartialOrd {}
which looks more like what the PartialEq / Eq dichotomy looks like. Rust chose to implement PartialOrd in terms of another operator: the trichotomy operator partial_cmp and cmp. In any total ordering, we can define an operator cmp(a, b) which returns whether a is smaller than, equal to, or larger than b. And in a total ordering, exactly one of those is true. In a partial ordering, however, we can still define this operator partial_cmp(a, b), but there's a fourth option, namely that the two are simply not comparable.
As for why Rust did it this way, I couldn't say for certain. Haskell has a similar setup, with an Ord typeclass, and in Haskell you can implement either <= or compare, and you get the other one for free. Python used to use __cmp__ (which is basically Rust's cmp) but Python 3 switched completely to defining <= and using functools.total_ordering for comparisons.
We could debate back and forth which mechanism is better. cmp has its benefits in terms of clarity and symmetry, but <= is better for studying abstract mathematics. If you define both structures the mathematical way (== for PartialEq and <= for PartialOrd), then in both cases you get a single binary operator which "returns" bool, and all of the other differences are in the axioms. The reason we don't have that satisfying symmetry in Rust is that Rust's PartialOrd is defined in terms of an operator that only makes total mathematical sense in Ord; we've taken a total ordering operator and removed some of its legs, leaving an operator that only works "some of the time".