Override plugin constant using a theme

You won’t be able to replace it at all if the plugin is not checking whether the constant has already been defined using if ( defined( 'MAX_THINGS' ) ). By definition constants can’t be overwritten, so this check is necessary to make a value ‘pluggable’. Adding @ to define() will suppress the error but it won’t make it work.

As you’ve noticed, plugins load before themes, so if the plugin does include this check you will need to set the constant in either a Must-use Plugin or the wp-config.php file, since both are safely editable and load before regular plugins. In my experience if a plugin supports customisation via constants then the expectation is usually that it would be added to wp-config.php.