The initial reason wass for chaining mathematical operations, like this:
class mynumberclass {
    int internal;
public:
    mynumberclass(int);
    mynumberclass operator+(const mynumberclass&) const;
    mynumberclass operator-(const mynumberclass&) const;
    mynumberclass operator*(const mynumberclass&) const;
    mynumberclass operator/(const mynumberclass&) const;
    mynumberclass operator%(const mynumberclass&) const;
    mynumberclass& operator+=(const mynumberclass&);
    mynumberclass& operator-=(const mynumberclass&);
    mynumberclass& operator*=(const mynumberclass&);
    mynumberclass& operator/=(const mynumberclass&);
    mynumberclass& operator%=(const mynumberclass&);
};
int main() {
    mynumberclass a(3);
    mynumberclass b(4);
    mynumberclass c = (a * b + b) / 2; //this chains 3 of the above operators
}
without chaining, that code would have to look like this:
int main() {
    mynumberclass a(3);
    mynumberclass b(4);
    mynumberclass c(a);
    c *= b;
    c += b;
    c /= 2;
}
FredLarson also mentions the Named Parameter Idiom, which is certainly an awesome thing you can use chaining for.