Поскольку выражение никогда не вычисляется.
При первом подходе при визуализации страницы #{rich:component...}
оценивается Richfaces, и на странице отображается что-то вроде приведенного ниже кода:
document.getElementById('formID:modalPanelID').component.show();
Поскольку вы делаете это программно, вы обходите этот рендеринг. Я бы посоветовал вам использовать приведенный выше javascript.
commandLinkObject.setOnClick("document.getElementById('formID:modalPanelID').component.show()");