Well, again, I guess I'll resolve my own question without actually answering the core curiosity. I'll just assume that the cumbersome and inconsistent behavior is intended. If the user is forced to wrap every call to imapplymatrix() in all the requisite class-dependent matrix and output rescaling, then they might as well formalize it in a function. I went ahead and wrote another passthrough/fallback tool for my Image Manipulation Toolbox (MIMT).
Said function (imappmat) takes normalized transformation matrices regardless of image class, and the output is always scaled correctly for its class. For speed, it uses imapplymatrix() when available; otherwise, it does the transformation internally.
imappmat() is part of the MIMT and depends on it: