This question is two years old, but I don't see that it's received a good answer. Very simply, "ses" is grammatically a cardinal number and "miliono" is grammatically a noun showing a quantity. As for why this is and whether this is a good thing or logical, I'm going to skip over that part. It's just how Esperanto is.
So, since million (miliono) is a noun, we need the -n ending if we have one.
- We have a million.
- Ni havas milionon.
We can then clarify what we have a million of. For that, we use da.
- Ni havas milionon da pomoj.
In contrast, if we have apples, we add the -n right to the apples.
- Ni havas pomojn.
Then, since "ses" is grammatically a number, we can add "ses" to say how many we have.
- NI havas ses pomojn.
By the way, we can also have more than one million. Let's say we had six of them.
- Ni havas ses milionojn.
Then clarify six million of what
- NI havas ses milionojn da pomoj.
LIterally "We have six millions of eggs."
This is similar to the Portuguese concept of numbers.
One thousand apples: mil maçãs
One million apples: Um milhão de maçãs
Literally it's one million of apples. The word for million is considered to be a noun of it's own. I like to think of it as a noun of quantity, like a barrel or apples. Correct me if I'm wrong, but the Esperanto word for barrel (barelo?) would be the object of the sentence if the word million were to be replaced by barrel, and would take the accusative, not the word for apples (pomoj). Esperanto seems to also have this feature.
Miliono is a noun, not an adjective.
I've heard that prepositions govern the nominative, but I will go out on a limb and say that the phrase "adjectives govern the accusative" is nonsense. If I'm mistaken, please clarify what that phrase means - and if possible, show a link to the phrase in use.
OK, back to the first question asked.... Is there any reason why the sentence, "Ni havas milionajn pomojn" would not be correct? I mean it's not as if Esperanto doesn't turn nouns into adjectives at times, with the adjective agreeing in number and case with the direct object: La artistaj infanoj faris gipsajn pomojn.
Normally when you turn numbers in to adjectives, you're forming the ordinal. For example, unu – one, unua – first. So I would expect miliona to mean the millionth (ordinal rather than fraction), and milionajn to be the accusative plural form of that, which doesn't quite make sense in your sentence. Mi havas la milionan pomon would be "I have the millionth apple" (having passed over the previous 999,999). But the numbers ending with -o do work a little differently so I'd welcome clarification as I can't find this in any dictionary.