Em um projeto que trabalhei havia a necessidade de identificar os dispositivos por algum identificador único e imutável entre apps.

O WinRT prove a API de HardwareIdentification, onde é possível chamar o método GetPackageSpecificToken para obter um token único para o hardware. No entanto este token é diferente para cada aplicativo, logo, se o objetivo for verificar em vários apps (para envio para um serviço externo, por exemplo) o DeviceID então o HardwareIdentification não é uma opção.

Nas versões anteriores do Windows Phone OS era possível obter dados como IMEI, número de série, etc, já no Windows Phone 8.1 (WinRT) não é mais possível.

Uma opção que funciona muito bem é utilizar o NetworkAdapterId, que é similar ao MAC Address do dispositivo (mesmo que o WinRT não exponha nenhuma API para obter o MAC Address propriamente dito), e é único entre apps e só vai mudar caso haja alguma mudança no hardware de rede, algo muito raro de acontecer com um smartphone ou tablet.

Veja abaixo o snippet para obter o ID:

var networkProfiles = Windows.Networking
                    .Connectivity
                    .NetworkInformation
                    .GetConnectionProfiles();

var adapter = networkProfiles
            .First<Windows.Networking.Connectivity.ConnectionProfile>()
            .NetworkAdapter;

string networkAdapterId = adapter.NetworkAdapterId.ToString();

Este mesmo código também funciona no Windows 8 (desktop), no entanto tenha em mente que a chance de uma alteração de hardware de rede em um desktop é muito mais provável que em um smartphone.