I updated the GridManager to use centers instead of positions and corrected boundaries. This helped with collision detection. Updated target expansion to not overlap other targets. This mostly works, but I have not completely updated the collision detection, and there are occasionally targets that overlap.
Also, the BoundingSphere I am using is quirky: sometimes sharing the same point counts as intersecting, and sometimes it doesn't. I'm going to have to look at that. Since I am doing this as a 2D game, I might abandon the BoundingSphere and write my own bounding code.
Within a couple days, I hope to have the collision and expansion down. I think I might experiment with forcing the targets to use integers only for coordinates, so that it doesn't look as sloppy at the point where one group bumps into the other.