Certos caracteres no conjunto de caracteres WE8ISO8859P1 possuem uma representação binária diferente do mesmo caractere em UTF8.
O que eu sugiro são 2 maneiras possíveis
1) Tente usar provedores de dados nativos Oracle para .NET (ODP.NET). Pode haver um bug/recurso na biblioteca System.Data.OracleClient da Microsoft que este adaptador não suporta automaticamente a conversão de WE8ISO8859P1 para unicode. Aqui está um link para ODP.NET
Espero que haja suporte para essa codificação no ODP (mas para dizer a verdade nunca verifiquei isso, é apenas uma sugestão)
2) Solução alternativa:no Dataset, você deve criar um campo binário (mapeado para o campo da tabela original) e um campo String (não mapeado para o banco de dados). Ao carregar dados no conjunto de dados, itere para cada linha e execute a conversão de matriz binária para string.
O código deve ser algo assim
Encoding e = Encoding.GetEncoding("iso-8859-1");
foreach(DataRow row in dataset.Tables["MyTable"])
{
if (!row.IsNull("MyByteArrayField"))
row["MyStringField"] = e.GetString((row["MyByteArrayField"] as byte[]));
}