I don't know if it's possible to walk the glTF model structure and extract a subset of the geometry into another model, or at least apply different transformations to a branch of the model geometry. I doubt, however, this is possible because of the way glTF models are highly optimized. Don't take this as a final answer as I don't know Cesium well enough.
At this time, I'm resolving this by separating geometry earlier in the asset pipeline, and loading separate models, each centered on their own local coordinate system. I manually keep track of the coordinates and orientation of one object relative to the other, and do calculations manually.
var house = createModel("house", 'house/hull-lp.glb');
var chimney = createModel("chimney", 'models/chimney.glb');
And to position the chimney, something in the lines of...
var chimneyRelativePosition = new Cesium.Cartesian3(0, 10, 0); // The position of the chimney relative to the origin of the house
var chimneyRelativePositionScaled = Cesium.Cartesian3.multiplyByScalar(chimneyRelativePosition, houseScaleFactor, chimneyRelativePositionScaled);
var localCoords = Cesium.Matrix3.fromQuaternion(house.orientation.getValue(), new Cesium.Matrix3());
var chimneyPosition = Cesium.Matrix3.multiplyByVector(localCoords, chimneyRelativePositionScaled, new Cesium.Cartesian3());
chimney.position = chimneyPosition;
Edit: glTF is designed to preserve node hierarchy, so the format allows it. I don't know how however how to manipulate nodes and their transformations :(.