I have found how to do it and I was basically over-complicating something simple. You just need to specify dynamic_axes in your torch.onnx.export function. In particular, there is no need to jit the model and trace based export works fine.
In my example I should have done this (making sure that the batch_first in the GRU init is set to False
dummy_input = torch.randn(100).reshape(1, -1, 1)
torch.onnx.export(my_model_LEFT_AS_NN_MODULE,
                    (dummy_input, ),
                    'test_rnn.onnx',
                    verbose=True,
                    input_names=['input'],
                    output_names=['output',],
                    dynamic_axes={'input': {1: 'sequence'}, 'output': {1: 'sequence'} } )

And then to use it simply do
import onnxruntime
import numpy as np
sess = onnxruntime.InferenceSession("test_rnn.onnx")
test_input = np.random.randn(100).astype(np.float32).reshape( 1, -1, 1)  
sess.run(["output"], {'input': test_input }))
test_input_different_size = np.random.randn(10).astype(np.float32).reshape( 1, -1, 1)  
sess.run(["output"], {'input': test_input_different_size }))

I should have read the doc ; )
Hope it helps if anybody stumbles upon the same issue