Okay, it looks like I've found the answer to this one. It's not a bug. From the XFA 2.4 Specification:
readOnly
========
The processing application must not allow the user to make direct changes to the container's content. Indirect changes (e.g., via calculations) may occur. The container shall participate in the tabbing sequence and must allow the user to view its content, possibly scrolling through that content if required. The user must be able to select the container's content for clipboard copying. The container shall also generate a subset of events (those not associated with the user making direct changes to the content).
protected
=========
The processing application must prevent the user from making any direct changes to the container's content. Indirect changes (e.g., via calculations) may occur. The container will not participate in the tabbing sequence, though an application may allow the selection of text for clipboard copying. A protected container will not generate any events.
So, if I want the object to be excluded from the tabbing order, I need to set its access property to "protected", not "readOnly". The LC Designer GUI doesn't seem to allow me to set the access to "protected", so I can do it by editing the XML source or by setting the access programatically on the initialize event of the object.
Hope this post helps someone other than me.
Jared