“Revision” records in wp_posts have original post type instead of “revision”

Have you tried adding an extra clause checking for the revision post type in function pts_save_post( $post_id, $post ) { of post-type-switcher.php ?

E.g. as taken from trunk and modified:

/**
 * Set the post type on save_post but only when editing
 *
 * @since PostTypeSwitcher (0.3)
 * @global string $pagenow
 * @param int $post_id
 * @param object $post
 * @return If any number of condtions are met
 */
function pts_save_post( $post_id, $post ) {
    global $pagenow;

    // Only show switcher when editing
    if ( ! in_array( $pagenow, pts_allowed_pages() ) )
        return;

    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;

    if ( ! isset( $_POST['pts-nonce-select'] ) )
        return;

    if ( ! wp_verify_nonce( $_POST['pts-nonce-select'], 'post-type-selector' ) )
        return;

    if ( ! current_user_can( 'edit_post', $post_id ) )
        return;

    if ( $_POST['pts_post_type'] == $post->post_type )
        return;

    if ( ! $new_post_type_object = get_post_type_object( $_POST['pts_post_type'] ) )
        return;     

    if ( ! current_user_can( $new_post_type_object->cap->publish_posts ) )
        return;

    if($post->post_type == 'revision')
        return;

    set_post_type( $post_id, $new_post_type_object->name );
}
add_action( 'save_post', 'pts_save_post', 10, 2 );