Ваш первый подход будет работать с использованием угловых скобок, оборачивающих регулярное выражение следующим образом:
app = webapp2.WSGIApplication([
webapp2.Route('/', MainPage),
webapp2.Route('/products/', handler=MainProductsHandler),
webapp2.Route('/products/<id:(\w+)>/', handler=ProductHandler)
],debug=True)
Не забудьте добавить идентификатор параметра (или любое другое имя, выбранное вами для соответствия регулярному выражению) в метод get обработчика, иначе он будет жаловаться на неожиданный параметр.