1. Estás sobreescribiendo dentro de tu bucle la misma variable con un solo valor, eso explica porque muestra el último.
2. De por si no necesitas iterar, ya que $message ha de ser un array, así que una asignación simple debería funcionar.
Código PHP:
// MAL
foreach($message as $error) {
$_SESSION['status_upload'] = $error;
}
// BIEN
$_SESSION['status_upload'] = $message;
3. Al ser un array, o eso intentas, no puedes imprimir como si fuera cadena.
Código PHP:
// MAL
echo $_SESSION['status_upload']; // eso imprime Array
// BIEN
foreach ($_SESSION['status_upload'] as $foo) {
echo "ERROR: $foo<br>";
}