What's wrong with my plupload implementation?
When using Plupload integration module in custom code, you need to set up size twice. Preferably to the same value. First place you do it is the usual:

'#upload_validators' =&gt; array(
  'file_validate_size' =&gt; array(variable_get('my_max_file_size', 300 * 1024 * 1024)),
),


This handles display and post-upload verification.

Second place is #plupload_settings:

'#plupload_settings' =&gt; array(
  'runtimes' =&gt; 'html5',
  'chunk_size' =&gt; '10mb',
  'max_file_size' =&gt; variable_get('my_max_file_size', 300 * 1024 * 1024) . 'b',
),


This is what actually goes to the plupload JavaScript.