why add_menu_page use simple function as arg while add_meta_box a call back?

The parameters have the same meaning, they are just named inconsistent. Both accept calls to a function. This can even be the same function.

Here is a simple demo as a plugin. Download

/*
Plugin Name: Callback Demo
Description: Demonstrating how a meta box and a menu page can take the same callback function.
Version:     1.0
Required:    3.1
Author:      Thomas Scholz
Author URI:  http://toscho.de
License:     GPL
Plugin URI:  http://wordpress.stackexchange.com/q/24481/
*/
! defined( 'ABSPATH' ) and exit;

add_action( 'admin_menu', 'wpse_24481_demo' );

/**
* Adds a menu page and a meta box with the same callback function.
*
* @return void
*/
function wpse_24481_demo()
{
    $title="Callback Demo";
    $callback = 'wpse_24481_callback';

    add_menu_page( $title, $title, 'edit_posts', 'callback-demo', $callback );
    add_meta_box( 'callback-demo', $title, $callback, 'post' );
}

/**
* Prints the content.
*
* @return void
*/
function wpse_24481_callback()
{
    print 'Here may be dragons.';
}

.

Result

enter image description here

page menu


enter image description here

meta box

error code: 523