You can play do something like this. I cistomize panel function to add a segment to each panel either at left or right depending in the conditioning variables.
xyplot(y ~ x | a, groups = z < 5, data = DF, col = c("black", "red"),
pch=20, cex=0.3,
panel = function(...,subscripts){
limits <- current.panel.limits()
xx <- limits$xlim
yy <- limits$ylim
if(unique(print(DF[subscripts,'a']))=="two"){
lsegments(xx[1], yy[1], xx[1], yy[2],lwd=20)
}else{
lsegments(xx[2], yy[1], xx[2], yy[2],lwd=20)
}
panel.xyplot(...,subscripts=subscripts)
})