Por que você criou os arrays numPositivo e numNegativo com apenas 7 posições? E se todos os 8 números forem positivos (ou todos negativos)? Além disso, não dá para usar o mesmo índice em todos os arrays.
Por exemplo, se os números digitados forem 1, 2, -3, 4, 5, 6, 7, 8.
O terceiro número é -3, que é o primeiro número negativo da lista. Mas da forma que você fez, ele será colocado na terceira posição do array de números negativos (mas o correto seria colocar na primeira posição, já que foi o primeiro negativo encontrado).
Ou seja, vai ter que ter um contador para cada array (um para os positivos, outro para os negativos):
int numeros[] = new int[8];
int positivos[] = new int[8];
int negativos[] = new int[8];
Scanner sc = new Scanner(System.in);
System.out.println("Digite 8 números inteiros: ");
int iPos = 0, iNeg = 0;
for (int i = 0; i < numeros.length; i++) { // use length em vez de um valor fixo, assim vc pega o tamanho do array
System.out.print("-> ");
numeros[i] = sc.nextInt();
if (numeros[i] >= 0) {
positivos[iPos] = numeros[i];
iPos++;
} else {
negativos[iNeg] = numeros[i];
iNeg++;
}
}
// mostrando os números
System.out.printf("foram encontrados %d números positivos\n", iPos);
for (int i = 0; i < iPos; i++) {
System.out.println(positivos[i]);
}
System.out.printf("foram encontrados %d números negativos\n", iNeg);
for (int i = 0; i < iNeg; i++) {
System.out.println(negativos[i]);
}
Também considerei o zero como positivo (antes o if usava >, então se fosse zero, seria considerado negativo).
E mudei os nomes dos arrays para o plural, pois assim eles passam melhor a ideia de que têm mais de um número ali (numero no singular dá a ideia de que tem um só). Pode parecer um detalhe besta, mas dar nomes melhores ajuda na hora de programar.