hai due metodi
il primo (build route) riceve un array associativo con i parametri (chiave = valore) contenuti nella invocazione di JRoute::_() e li deve convertire in un array di 'segmenti' che verranno concatenati per formare l'url sef. ad esempio passare dal idCat=23 al nome della stessa.
il secondo (parse route) riceve un array con il 'percorso' url, o meglio i segmenti e deve ricostruire l'array associativo della query string, ovvero con le chiavi ed i valori. esempio passare da 'arredamento' a idCat=23.
come debba essere scritto il codice dipende troppo profondamente da come funziona il componente cui si riferisce (views, parametri query string, layout) perché si possa fare un esempio che non sia tradurre quanto già scritto nel citato articolo.
posso però dirti che, se nel tuo esempio categoria e sottocategoria sono due nomi di categoria, allora molto probabilmente non hai capito come funziona il sistema, perché manca il segmento che indica la view (basarsi sul numero dei segmenti è un errore, imho).
se vedi una pagina bianca significa che vi è un errore nel codice php: abilita la modalità di debug.
ciao
marco