Bradley Lucier writes (lightly edited):
A square primitive is useful in calculating with bignums because squaring a bignum is generally cheaper than multiplying two different bignums of the same size. For example, Gambit's runtime checks trivially whether the two arguments in (* a b) are eq? before calling the appropriate algorithm. Generally, it may be better to be able to express this primitive directly.
[He also points out that given square in the small language, we can have flsquare in the large language, though I don't think having the latter requires having the former.]
In addition, there are 20,340 Google hits for ["(define (square x)" ss|scm].