I do not know how to solve the problem of zero point size, presumably it would have to be defined in the internals of the grid source code at the C level.
However, I want to point out that regardless of the pointsGrob issue, the grobWidth and grobHeight are not defined for your packGrob / gTree and the approach would fail even if pointsGrob were replaced by a textGrob. You probably want to define a gTree of a new class, say "mygrob", and define your own widthDetails.mygrob and heightDetails.mygrob methods,
library(grid)
gt <- grobTree(linesGrob(x=c(0.2, 0.8), y=.5, gp=gpar(col="grey", lwd=10)),
textGrob("some label", gp=gpar(cex=2)),
cl = "mygrob")
widthDetails.mygrob <- function(x)
do.call(max, lapply(x$children, grobWidth))
heightDetails.mygrob <- function(x)
do.call(max, lapply(x$children, grobHeight))
grid.newpage()
grid.draw(gt)
grid.rect(width=grobWidth(gt), height=grobHeight(gt), gp=gpar(col="red"))