For Blocks and Items, it doesn't do any harm when you instanciate them in the static initializer anymore (since the removal of the block / item IDs). All the super constructor of a block / item does is setting some internal variables.
For everything else, yes, do it in preInit (since it usually has an ID in its constructor, like for biomes)
Registering them is another story, this should always go into the preInit.