In DotSpatial.Symbology.Layer, in the IsSelected property, the following code exists:
if (base.IsSelected != value)
{
OnLayerSelected(this, value);
base.IsSelected = value;
}
This appears to call the LayerSelected event while the layer has the old state. It appears to be by design.