Единственная реальная проблема с обнаружением браузера заключается в том, что если более новая версия браузера будет поддерживать некоторые новые функции (например, округленные границы), но вы все равно будете делать обходные пути.
Лучшим подходом является использование обнаружения функций, поэтому вы сможете использовать некоторые специфические возможности браузера, если он их поддерживает, и некоторый изящный шаблон деградации, когда что-то не поддерживается.
Для CSS наиболее прагматичный подход состоит в том, чтобы сбросить CSS, включенный для всех браузеров, а затем иметь некоторые общие правила CSS, которые выглядят одинаково во всех браузерах, и дополнительные файлы CSS для разных браузеров, которые содержат правила, которые должны отличаться для разных движков.
Из моего последнего опыта почти всегда можно поддерживать только две версии этих файлов DIFF - одну для Firefox, Safari, Chrome и другую для семейства IE. И использовать функцию обнаружения для JS.