¿El operador condicional no puede emitir implícitamente?

Estoy un poco perplejo por este pequeño capricho de C #:

Variables dadas:

Boolean aBoolValue;
Byte aByteValue;

Las siguientes compilaciones:

if (aBoolValue) 
    aByteValue = 1; 
else 
    aByteValue = 0;

Pero esto no lo hará:

aByteValue = aBoolValue ? 1 : 0;

El error dice: "No se puede convertir implícitamente el tipo 'int' a 'byte'".

Y, por supuesto, esta monstruosidad compilará:

aByteValue = aBoolValue ? (byte)1 : (byte)0;

¿Que está pasando aqui?

EDITAR:

Usando VS2008, C # 3.5

Respuestas a la pregunta(3)

Su respuesta a la pregunta