Yes, you are correct, the behavior is inconsistent and wasn't related to the rotation pivot of the control, definitely getting different results from the getAttr() and getAttr(time). It seems like the issue lies with any controls that are a child of a group parented to joints that are driven by follicles connected to weighted nurbs surfaces. I presume there is some issue with the way getAttr(time) is evaluating the components of the deforming surface, but don't have sufficient understanding to really say what's going on.
In the case of the spine on the Bulbasaur rig, anything under the 'C_big_vine_master_ctrl_offs' has issues as that group is parented to a series of joints being controlled by follicles on 'C_spine_Ribbon'. I tried an API method to get the value of the worldMatrix[0] plug at a specific time but ran into the same issue with objects that were children of the ''C_big_vine_master_ctrl_offs' group. The only workaround I could see was to parent an object in world space to the control, then bake simulation on it, before using getAttr(time)... but that's probably even less ideal than just setting the time, using getAttr(), and returning to the current time..
Anyways, that's about at the limit of my understanding of the issue, sorry I couldn't provide a better solution! Perhaps someone else in the group might have a better grasp of the problem!
In case it's of any use, here's the API method I tried to get the world matrix at different time, that ran into the same issue as the getAttr(time) python command.
###################################
import maya.api.OpenMaya as om2
import maya.cmds as cmds
new_time_value = 24.0 # frame to set as context
mTime = om2.MTime()
mTime.value = new_time_value
mDGContext = om2.MDGContext(mTime)
node = 'C_vine_grp' # Name of Maya node to query
mSelList = om2.MSelectionList()
mSelList.add(node)
mObject2 = mSelList.getDependNode(0)
mFnDepNode2 = om2.MFnDependencyNode(mObject2)
mPlug = mFnDepNode2.findPlug('worldMatrix', False)
mPlugAttr = mFnDepNode2.findPlug('worldMatrix', False).attribute()
mPlug.selectAncestorLogicalIndex(0, mPlugAttr)
mPlugFuture = mPlug.asMObject(mDGContext)
mFnMatrixData = om2.MFnMatrixData(mPlugFuture)
mMatrix = om2.MMatrix(mFnMatrixData.matrix())
mTransformationMatrix = om2.MTransformationMatrix(mMatrix)
transforms = mTransformationMatrix.translation(4)
world_translation = [transforms[0], transforms[1], transforms[2]]
print('World translation of "{}" at frame {} is: {}'.format(node, new_time_value, world_translation))
###################################