out of the box we do not have these interaction plots in Gviz, but there is a straight forward way to retrieve all of the plotting coordinates:
The return value of the plotTracks function is a list with the input track objects, but they all contain the relevant plotting information in their ImageMap slot. The coodrs method can be used to extract them. Note that the y coordinates are actually reverted (top is 0). Now the second thing you need to know is that Gviz is using grid graphics under the hood, so for every manipulation of the plot you will also need to use grid graphics tools. Here's a rather trivial example to connect elements of an AnnotationTrack:
annTrack <- AnnotationTrack(start=c(1, 100, 700, 1900), width=50, chromosome=1, genome="hg19", name="foo", id=letters[1:4])
res <- plotTracks(list(GenomeAxisTrack(), annTrack))
xy <- coords(res$foo)
x = xy[,1] + (xy[,3]-xy[,1])/2
y = xy[,2] + (xy[,4]-xy[,2])/2
pushViewport(viewport(xscale=c(0, dev.size(units="px")), yscale=c(dev.size(units="px"), 0)))
grid.bezier(rep(x[3:4], each=2), c(y, rep(min(xy[,2]), 2), y), default.units="native")
This is really just a starter, but I'm sure you will figure out the details.
With regards to your second question: There is no easy way to increase the margin of the IdeogramTrack. However you can always just add a dummy CustomTrack above or below with a hidden title panel. Probably not the cleanest solution but it works.
That being said, my co-author Robert has some ideas about Sashimi plots which may be helpful in this context, so stay tuned.