The class-constructor for /includes/classes/shipping.php uses $PHP_SELF to get the file-system extension to use for a previously-selected shipping method:
Code:
  function __construct($module = null) {
      global $PHP_SELF, $messageStack;

      if (defined('MODULE_SHIPPING_INSTALLED') && !empty(MODULE_SHIPPING_INSTALLED)) {
        $this->modules = explode(';', MODULE_SHIPPING_INSTALLED);
      }
      $this->notify('NOTIFY_SHIPPING_CLASS_GET_INSTALLED_MODULES', $module);

      if (empty($this->modules)) return;

      $include_modules = array();

      if ( (zen_not_null($module)) && (in_array(substr($module['id'], 0, strpos($module['id'], '_')) . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)), $this->modules)) ) {
        $include_modules[] = array('class' => substr($module['id'], 0, strpos($module['id'], '_')), 'file' => substr($module['id'], 0, strpos($module['id'], '_')) . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)));
      } else {
        foreach($this->modules as $value) {
          $class = substr($value, 0, strrpos($value, '.'));
          $include_modules[] = array('class' => $class, 'file' => $value);
        }
      }
Wouldn't it be easier to just use a .php extension?