How can I allow trailing slashes on some URLs without a redirect, but not on others?

Use flush_rewrite_rules():

add_action( 'init', 'my_rewrite_func' );
function my_rewrite_func() {
    add_rewrite_rule( 'post4/$', 'index.php?p=12', 'top' );
    flush_rewrite_rules();
}

and / or whichever rewrite rules you use, you could always use /? for optional trailing slashes or force the trailing slash if you would prefer for it to always be there.