Well, I think I found the thing that triggers the problem - even if I didn't really find the problem itself. The :clim defsystem defines a dependency that reaches into one of its components - the Goatee/presentation-history file. (Maybe the "huh?" comment in the asd file should've clued me in a little before now, eh?) My guess (based on a later filesystem date on the file presentation-history as compared to the other file components of goatee-core) is that recompiling the file as a part of clim later than and as opposed to goatee-core made goatee appear to have changed, forcing recompiiling of parents... Then things got weird.
When I put the #+NIL in the obvious place (see below), things work as expected. (This with ASDF 3.0.2.4 - haven't check the older versions yet...)
Does anybody have any clue why this might have been this way? It seems to be wrong in spirit (recompiling files of another component from outside any operations on that specific component), and clearly raised the eyebrows of at least one McCLIM maintainer... In any event, thanks for the troubleshooting clues, guys, and sorry for any unintentional casting of aspersions...
-jm
(defsystem :clim
:depends-on (:clim-core :goatee-core :clim-postscript :drei-mcclim)
:components
(#+NIL(:file "Goatee/presentation-history" ; XXX: this is loaded as part of the Goatee system. huh?
:pathname #.(make-pathname :directory '(:relative "Goatee") :name "presentation-history" :type "lisp"))
(:file "input-editing-goatee")
(:file "input-editing-drei")
(:file "text-editor-gadget")
(:file "Extensions/tab-layout"
:pathname #.(make-pathname :directory '(:relative "Extensions")
:name "tab-layout"
:type "lisp"))))