Example Code:

function flush_rewrite_rules()
{
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
function activate()
{
    global $wp_rewrite;
    createRewriteRules( $wp_rewrite );
    flush_rewrite_rules();
}
function createRewriteRules( $rewrite )
{
    global $wp_rewrite;
    $new_rules = array( 'option/(.+)' => 'index.php?option=' . $wp_rewrite->preg_index(1) );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; // ERROR HERE............
    return $wp_rewrite;
}
add_action( 'generate_rewrite_rules', createRewriteRules );
register_activation_hook( file, activate );

Sometimes gives Fatal error: Unsupported operand types, but triggers the wordpress plugin and does not prevent working... What shall we be held doing wrong here?

Most likely either $new_rules or $wordpress_rewrite->rules isn't an assortment right now you need to mix them.

You could include an evaluation to ascertain if they're arrays, and when not, initialize them being an empty array.

(Addition: Why pass $rewrite being an argument, if you use a worldwide to obtain the original variable?)