I found this just now, which I think clears this up for me.
Retrieval pricing
Retrieval is priced at $0.20/GB per assistant per day. Attaching a single file ID to multiple assistants will incur the per assistant per day charge when the retrieval tool is enabled. For example, if you attach the same 1 GB file to two different Assistants with the retrieval tool enabled (e.g., customer-facing Assistant #1 and internal employee Assistant #2), you’ll be charged twice for this storage fee (2 * $0.20 per day). This fee does not vary with the number of end users and threads retrieving knowledge from a given assistant.
In addition, files attached to messages are charged on a per-assistant basis if the messages are part of a run where the retrieval tool is enabled. For example, running an assistant with retrieval enabled on a thread with 10 messages each with 1 unique file (10 total unique files) will incur a per-GB per-day charge on all 10 files (in addition to any files attached to the assistant itself).
note the line specifically talking about files attached to messages:
In addition, files attached to messages are charged on a per-assistant basis if the messages are part of a run where the retrieval tool is enabled.
This seems to imply that you are only charged for indexing if the files are attached when you actually perform a run.
Example:
POST https://api.openai.com/v1/threads/{thread_id}/runs