Using Edge.curve will give you unexpected results in many situations. It is better to iterate through the edges returned from Entities.add_arc and collect the unique vertices. Like so:
mod = Sketchup.active_model # Open model
ents = mod.entities # All entities in model
r = 10
c = Geom::Point3d.new(20,20,0)
start_a = 270.degrees
end_a = 180.degrees
edgearray = ents.add_arc( c, X_AXIS, Z_AXIS, r, start_a, end_a, 5)
pt2 = 10,10,0
ents.add_face(edgearray.collect{|e|e.vertices}.flatten.uniq << pt2)
please visit this discussion