Ninguna.
La versión superior se hace en casos en las que vayas a necesitar operar con ellas, o agregar alguna funcionalidad en la propiedad.
Por ejemplo, si estuvieses creando una clase para WPF, sería muy normal que sus propiedades fuera algo como esto:
Código:
private Int32 _idUsuario;
public Int32 IdUsuario
{
get { return _idUsuario; }
set
{
_idUsuario = value;
RaisePropertyChanged(); //Es una función que ahora no viene al caso.
}
}
Como puedes ver, dentro del Set estamos llamando a una función. Si fuera el segundo caso, no puedes menter ninguna funcionalidad ni llamadas a función.
Esta es la diferencia más llamativa.