From a quick look it appears that your diagnosis might be correct.
I can see how those length args are used to truncate the records in datasets, but model.config remains unmodified, so when it comes to generate it uses the task specific param defaults.
Most likely after use_task_specific_params() is run, model.config needs to be overriden again with user overrides.
So something like:
--- a/examples/seq2seq/finetune_trainer.py
+++ b/examples/seq2seq/finetune_trainer.py
@@ -205,6 +205,10 @@ def main():

     # use task specific params
     use_task_specific_params(model, data_args.task)
+    if model.config.max_length is not None and data_args.max_target_length is not None:
+        print(f"before {model.config.max_length}")
+        model.config.max_length = data_args.max_target_length
+        print(f"after {model.config.max_length}")

     # set num_beams for evaluation
     if data_args.eval_beams is None:

So using your last command line (btw, I think it’s missing --task summarization)
2020-12-18 14:30:47 | INFO | utils | using task specific params for summarization: {'early_stopping': True, 'length_penalty': 2.0, 'max_length': 200, 'min_length': 30, 'no_repeat_ngram_size': 3, 'num_beams': 4, 'prefix': 'summarize: '}
before 200
after 50

but then there are 3 of those.
but first please test if this one makes a difference.
I’m using cnn_dm db from README.md to test this:
./finetune_trainer.py --learning_rate=3e-5 --fp16 --do_train --do_eval --do_predict \
--evaluation_strategy steps --predict_with_generate --n_train 100 --n_val 100 --n_test 100 \
--num_train_epochs 1 --data_dir cnn_dm --model_name_or_path "t5-small" --output_dir output_dir \
--per_device_train_batch_size 5 --per_device_eval_batch_size 8 --max_target_length 50 \
--val_max_target_length 50 --test_max_target_length 50 --overwrite_output_dir --task summarization