The best layman answer I can give is this: because in designing generics they do not want to repeat the same decision that was made to Java's array type system that made it unsafe.
This is possible with arrays:
Object[] objArray = new String[] { "Hello!" };
objArray[0] = new Object();
This code compiles just fine because of the way array's type system works in Java. It would raise an ArrayStoreException at run time.
The decision was made not to allow such unsafe behavior for generics.
See also elsewhere: Java Arrays Break Type Safety, which many considers one of Java Design Flaws.