On the subject of why 3,000RPM is seen as the limit of advance:
Denser mixtures burn quicker than sparse mixtures.
Ignoring forced induction for a moment, when running wide open throttle (MAP ~100kpa) you'll have a dense mixture; when running closed throttle (MAP 20-50kpa) you'll have a sparse mixture.
For a given engine and a given mixture density it takes nearly a fixed amount of time to burn that mixture and thus reach peak pressure in the cylinder - this time is independent of RPM. So at low RPM you need to ignite near TDC (low RPM = less advance) and at high RPM you need to ignite further away from TDC (high RPM = more advance). The goal is to get peak pressure ~20 ATDC (as far as I understand it, anyway!).
In the old days, vacuum advance was there to advance timing for sparse mixture (low MAP = more advance) but return to mechanical timing for dense mixture (high MAP = less advance). Today we use the MAF or MAP sensor to infer density.
Old distributor based engines had all timing in by 3,500 RPM or sooner. I cannot say why that is - I have never seen it adequately explained.
I suspect it is as much an artifact of the limits of the mechanical advance systems as it is tuned to the needs of the engine. I suspect that a mechanism that would give all the advance required for peak power at 7,000RPM would have too much in mid range (say 3,000-4,000) and so would knock; rather than have a two-tiered mechanical advance, the designers settled for all in before peak torque. Remember that most mechanical distributor systems probably were push rod engines running no more than 5,500 RPM (barring the real racing stuff).
All the ignition maps that I have seen for electronic ignition on normally aspirated engines that do not have knock control continue to feed in more advance all the way to the red line, though typically the map has an anomaly on the way where timing is retarded compared to neighbouring sites. This probably corresponds to where the mechanical advance limit would have been set for that engine, had it been distributor based.
So, I think that you should aim to make your ignition map taper up from idle to max load/max rpm, rather than flat above 3,000RPM.
I hope that makes some sense!