The problem here seems to be that the vertex is added too quickly - before the Editor has a chance to initialize its drawing resources. In this case, the MapView.Editor.AddVertex.CanExecute method would return false.
Try to wait for the Editor to catch up like this instead:
// Start the Editor polygon drawing process
var tcs = new TaskCompletionSource<bool>();
EventHandler handler = (s, a) => { tcs.SetResult(true); };
MyMapView.Editor.AddVertex.CanExecuteChanged += handler;
var drawTask = MyMapView.Editor.RequestShapeAsync(DrawShape.Polygon);
await tcs.Task;
MyMapView.Editor.AddVertex.CanExecuteChanged -= handler;
// After Editor initialization, add a fixed initial point
MyMapView.Editor.AddVertex.Execute(MyMapView.Extent.GetCenter());
// Now get the rest of the points from the user
var poly = await drawTask as Polygon;
This should allow you to set a fixed starting point for the polygon and let the user fill in the rest.
-Greg