How can I encapsulate Drush command with option to use arguments
The best way to provide default options to a Drush command, whether it is a core Drush command or a custom command you have written, is to place your default values into a drushrc.php file under a command-specific option.

For example, if you wanted the Drush site-install command to always name the site admin 'superuser', and you wanted to always install with the password 'secretsecret', then you could add the following definition:

$command_specific['site-install'] = array(
  'account-name' =&gt; 'superuser',
  'account-pass' =&gt; 'secretsecret',
);


If you later decided you wanted to use a different account name for a site you were installing, then you could just run drush site-install --account-name=su, and the option from your configuration file would be overridden.

If the only purpose of your install-mysite command was to select default values for site-install, then the above configuration is all that you will need.  If you want to add additional code that does other things after the install, though, then you could go ahead and write your custom command, and place a $command_specific['install-mysite'] entry in your drushrc.php file to provide the default values for your command's options.

If you only want to make minor changes to the way the site-install command works, you might want to also consider providing a "policy file" that provides a hook that runs after the install command finishes.  See policy.drush.inc for details.