Não sei se ainda tem interesse na questão, mas como vi que não obteve respostas anteriormente, resolvi postar uma sugestão usando rgeos::gBuffer().
Nesse caso específico não se preservou o número original de vértices.
#Contorno da área
t05 <- data.frame(x = c(371299.9, 371266.4, 371205.6, 371111.8,
371047.6, 371018.2, 371014, 371009.3, 370983.1, 370919.7, 370853.6,
370785.6, 370748.8, 370711.8, 370687.8, 370696.4, 370785.9, 370885.5,
371035.8, 371148.1, 371205.2, 371231.7, 371236.5, 371240.3, 371285.8,
371326.5, 371397.2, 371417.1, 371432.9, 371445, 371455.7, 371466.4,
371476.6, 371502.6, 371536, 371550, 371546.8, 371528.3, 371470,
371393.3, 371299.9, 371299.9), y = c(8246589, 8246560, 8246508,
8246428, 8246373, 8246349, 8246348, 8246352, 8246385, 8246465,
8246551, 8246638, 8246685, 8246732, 8246764, 8246771, 8246846,
8246932, 8247062, 8247160, 8247209, 8247230, 8247224, 8247221,
8247160, 8247107, 8247016, 8246991, 8246967, 8246939, 8246914,
8246892, 8246875, 8246846, 8246821, 8246809, 8246802, 8246785,
8246735, 8246669, 8246589, 8246589))
plot(t05, type="l", asp=1)
# Criando objetos "sp"
t05.sp <- t05
t05.spp <- SpatialPolygons(list(Polygons(list(Polygon(t05)), ID="area")))
plot(t05.spp, bor=3, lwd=2, axes=F)
# Buffering
plot(buffer <- gBuffer(t05.spp, width=-30, quadsegs=0,
capStyle="SQUARE", joinStyle="MITRE", mitreLimit=5), add=T)
### Vértices da área reduzida
t05.2 <- as.data.frame(coordinates(buffer@polygons[[1]]@Polygons[[1]])); t05.2