You map it to an array. In Ruby any hash style assignments in a method call, which this is, but must come at the end to be implicitly converted to a hash. In the initial example you are doing this:
map.resources(:courses, {:has_many => :pages})
And that works just as well as the normal version, but it’s not as readable. If you did it your way, Ruby wouldn’t be able to make the last arguments a hash as you have just a key as the last argument (your :forums looks like an additional argument to map.resources not a part of :has_many).
Anyway, answered in the first line of code, hopefully the rest may make it slightly clearer.
when I have more than one nested 'has_many' resource, i think about
creating a namespace... Seanbehan.com
...this keeps your other controllers (forums, pages) clean and restful