The logic for storing Shape representations seems to be different for each Strategy. The PrefixTreeStrategy impls store the Shape in WKT, which is nice if you're using WKT but not much help if you're not. BBoxStrategy doesn't actually store the Shape itself, but a representation of the bounding box. TwoDoubles seems to follow the PrefixTreeStrategy approach, which is surprising since it only indexes Points and they could be stored without using WKT.
I think we need to consider what storing a Shape means. If we want to store the Shape itself, then that logic should be standardised and done outside of the Strategys since it is not really related to them. If we want to store the terms being used by the Strategys to make Shapes queryable, then we need to change the logic in the Strategys to actually do this.