In the debug console, this code:
=tostring( mw.uri.fullUrl( "Test", { foo = { "bar", "baz" } } ) )
gives me the following output:
http://127.0.0.1:8080/w/index.php?title=Test&foo%5B1%5D=bar&foo%5B2%5D=baz
Instead, I would expect this:
http://127.0.0.1:8080/w/index.php?title=Test&foo=bar&foo=baz
I see the same effect with mw.uri.localUrl and mw.uri.canonicalUrl as well.
However, I see it works fine with mw.uri.new:
=tostring( mw.uri.new{ host = "www.mediawiki.org", path = "/w/index.php", query = { foo = { "bar", "baz" } } } ) //www.mediawiki.org/w/index.php?foo=bar&foo=baz
It looks like something odd is happening when the query array is passed through to wfArrayToCgi via Title.php. I'm not sure where the best place is to make the fix though.