Array of Class handles "No implication of declaring a limit on no of handles?"

What is happening in your testcase is actually slightly different than you describe.

IEEE 1800-2012 74.6 says:

Writing to an array with an invalid index shall perform no operation, with the exceptions of
writing to element [$+1] of a queue (described in 7.10.1) and creating a new element of an associative array
(described in 7.8.6). Implementations may issue a warning if an invalid index occurs for a read or write
operation on an array.

The key phrase in that is “Implementations may issue a warning…”

This means each simulation vendor is free to choose for themselves if they issue warning message in cases like this or not. For example in QuestaSim we do not issue a warning in default mode, but you will get the warning

** Warning: class_array.sv(13): (vopt-2696) Element index 1 into ‘top1’ is out of bounds.

if you compile in -lint mode.

If you add a $display statement that prints the contents or size of your ‘top1’ array, you will see that it actually only contains 2 elements and the end your initial block