Parameters

links: An associative array of links to be themed. The key for each link
is used as its CSS class. Each link should be itself an array, with the
following elements:

title: The link text.

href: The link URL. If omitted, the 'title' is shown as a plain text
item in the links list.

html: (optional) Whether or not 'title' is HTML. If set, the title
will not be passed through check_plain().

attributes: (optional) Attributes for the anchor, or for the <span>
tag used in its place if no 'href' is supplied. If element 'class' is
included, it must be an array of one or more class names.

If the 'href' element is supplied, the entire link array is passed to
l() as its $options parameter.

attributes: A keyed array of attributes for the UL containing the
list of links.

heading: (optional) A heading to precede the links. May be an
associative array or a string. If it's an array, it can have the
following elements:

text: The heading text.

level: The heading level (e.g. 'h2', 'h3').

class: (optional) An array of the CSS classes for the heading.

When using a string it will be used as the text of the heading and the
level will default to 'h2'. Headings should be used on navigation menus
and any list of links that consistently appears on multiple pages. To
make the heading invisible use the 'element-invisible' CSS class. Do not
use 'display:none', which removes it from screen-readers and assistive
technology. Headings allow screen-reader and keyboard only users to
navigate to or skip the links. See
http://juicystudio.com/article/screen-readers-display-none.php and
http://www.w3.org/TR/WCAG-TECHS/H42.html for more information.

The addition of the class="active" provided by theme_links() and l() is based on $_GET['q'] which is the standard URL, e.g. node/XX.

If you are creating a list of links with URL aliases, you'll need to pass them through drupal_get_normal_path() first so that they are converted to the standard URL. Then the match will occur and the class="active" will be added.