While the 2.4GHz 802.11g theoritical speed in 54megabits/second, the effective data transfer speed is more like half that, so mid-20's is what you should expect from 802.11g 2.4GHz.
5GHz 802.11n can do much better, but you need to have a good signal (5GHz does not travel as far as 2.4GHz, and is affected more by walls), and a WiFi router that uses a sufficiently fast CPU in it. Some router models use under powered CPUs which cannot operate at the potential maximum for 5GHz 802.11n connections.
One thing to try (ONLY AS AN EXPERIMENT) is to turn off WiFi encryption for a 5GHz 802.11n connection. Ethernet does not get encrypted, but WiFi is encrypted, so that is extra overhead the router needs to perform for WiFi. If your performance improves, then that is a very good indication your router CPU is under powered. Also make sure your 5GHz connection has a strong signal.
Finally, it is possible there is WiFi interference. While rare, there are some 5GHz cordless phones and baby monitors. It could be a neighbors, especially if you are in an apartment/condo complex. Another WiFi router newer by using the same 5GHz channel or nearby channel (as 802.11n can gange several channels together to get more bandwidth). You can check on conflicting WiFi routers using
Spotlight -> search for: Wireless Diagnostics
Enter your Admin password
Wireless Diagnostics -> Window -> Utilities -> Wi-Fi Scan -> Scan Now
Enlarge the window to see more columns
You are looking for neighbors using the same channel as your router in the 5GHz frequencies (feel free to check out the 2.4GHz conflicts as well)
The lower the negative RSSI number the stronger the signal (something in the -40's is good for you, bad if on the same channel from a neighbor; for example, I have a neighbor with -87 on a different channel and that is great as we do not use the same channels, and his signal is very weak)
The higher the negative Noise number the less interference your router is seeing (something in the -90's is goodness)